Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Un evento è un'azione o un'occorrenza , ad esempio un clic del mouse o un limite di credito superato, riconosciuto da alcuni componenti del programma e per il quale è possibile scrivere codice per rispondere. Un gestore eventi è il codice scritto per rispondere a un evento.
In Visual Basic sono disponibili due lati per lavorare con gli eventi:
- Pubblicazione di eventi: le classi dichiarano gli eventi e le generano quando si verifica qualcosa di interessante usando l'istruzione RaiseEvent. Questo è ciò che effettivamente richiama (chiama) i gestori di eventi.
-
Sottoscrizione di eventi: si sottoscrive gli eventi identificando le procedure come gestori per eventi specifici. È possibile eseguire questa operazione con una
Handlesclausola e unaWithEventsvariabile o con un'istruzione AddHandler.
Un gestore eventi in Visual Basic è una Sub routine. Il tuo codice non lo richiama direttamente come fanno altre procedure Sub. Invece, gli editori di eventi invocano la routine quando l'evento viene generato, in quanto la routine è sottoscritta all'evento.
L'uso di una Handles clausola è il modo predefinito per sottoscrivere gli eventi in Visual Basic. Questo è il modo in cui i gestori eventi vengono scritti dai progettisti quando si programma nell'ambiente di sviluppo integrato (IDE). L'istruzione AddHandler è adatta per la sottoscrizione di eventi in modo dinamico in fase di esecuzione.
Quando si verifica l'evento, Visual Basic chiama automaticamente la routine del gestore eventi. Qualsiasi codice che ha accesso all'evento può farlo verificare eseguendo un'istruzione RaiseEvent.
È possibile associare più gestori eventi allo stesso evento. In alcuni casi è possibile dissociare un gestore da un evento. Per altre informazioni, vedere Events.
Sottoscrivere un evento usando Handles e WithEvents
Assicurarsi che l'evento sia dichiarato con una dichiarazione di evento.
Dichiarare una variabile oggetto a livello di modulo o classe usando la
WithEventsparola chiave . LaAsclausola per questa variabile deve specificare la classe che genera l'evento.Nella dichiarazione della routine di gestione degli
Subeventi aggiungere unaHandlesclausola che specifica laWithEventsvariabile e il nome dell'evento.Quando si verifica l'evento, Visual Basic chiama automaticamente la
Subroutine. Il codice può usare un'istruzioneRaiseEventper generare l'evento e richiamare tutti i gestori sottoscritti.Nell'esempio seguente viene definito un evento e una
WithEventsvariabile che fa riferimento alla classe che genera l'evento. La routine di gestione degliSubeventi usa unaHandlesclausola per specificare la classe e l'evento che gestisce.' Example showing event handling with Handles and WithEvents Public Class EventPublisher Public Event SomethingHappened() Public Sub CauseEvent() ' Raise the event when something interesting happens RaiseEvent SomethingHappened() End Sub End Class Public Class EventSubscriber ' Declare a WithEvents variable Dim WithEvents eventObj As New EventPublisher ' Handle the event using Handles clause Public Sub ProcessHappen() Handles eventObj.SomethingHappened ' Insert code to handle somethingHappened event. Console.WriteLine("Event handled using Handles clause!") End Sub Public Sub TriggerEvent() eventObj.CauseEvent() End Sub End Class
Sottoscrivere un evento usando AddHandler
Assicuratevi che l'evento sia dichiarato con un'istruzione di codice
Event.Eseguire un'istruzione AddHandler per connettere dinamicamente la routine di gestione degli
Subeventi all'evento.Quando si verifica l'evento, Visual Basic chiama automaticamente la
Subroutine. Il codice può usare un'istruzioneRaiseEventper generare l'evento e richiamare tutti i gestori sottoscritti.Nell'esempio seguente viene utilizzata l'istruzione AddHandler nel costruttore per associare la
OnTimerElapsedroutine come gestore eventi per un evento timer personalizzato.' Example showing event handling with AddHandler Public Class Timer Public Event TimerElapsed(ByVal message As String) Public Sub Start() ' Simulate timer elapsed RaiseEvent TimerElapsed("Timer has elapsed!") End Sub End Class Public Class Application Private appTimer As New Timer() Sub New() ' Use AddHandler to dynamically associate event handler AddHandler appTimer.TimerElapsed, AddressOf OnTimerElapsed End Sub Private Sub OnTimerElapsed(ByVal message As String) ' Insert code to handle timer elapsed event Console.WriteLine($"Handling timer event: {message}") End Sub Public Sub StartTimer() appTimer.Start() End Sub End ClassÈ possibile annullare l'dissociazione di un gestore eventi da un evento eseguendo l'istruzione RemoveHandler.