Istruzione AddHandler
Associa un evento a un gestore eventi in fase di esecuzione.
Sintassi
AddHandler event, {AddressOf eventhandler | expression }
Parti
In parte | Descrizione |
---|---|
event |
Nome dell'evento da gestire. |
eventhandler |
Nome di una routine che gestisce l'evento. |
expression |
Espressione lambda che gestisce l'evento. |
Le parti AddressOf eventhandler
e expression
si escludono a vicenda.
Osservazioni:
Le istruzioni AddHandler
e RemoveHandler
consentono di avviare e arrestare la gestione degli eventi in qualsiasi momento durante l'esecuzione del programma.
La firma del nuovo gestore eventi (routine eventhandler
o espressione lambda expression
) deve corrispondere alla firma dell'evento event
.
La parola chiave Handles
e l'istruzione AddHandler
consentono entrambe di specificare che quelle particolari routine gestiscono particolari eventi, ma esistono alcune differenze. L'istruzione AddHandler
connette le routine agli eventi in fase di esecuzione. Usare la parola chiave Handles
quando si definisce una routine, per specificare che questa gestisce un particolare evento. Per altre informazioni, vedere Handle.
Un gestore aggiunto con un'espressione lambda esplicita NON PUÒ essere rimosso in un secondo momento (usando RemoveHandler
). In effetti, se all'espressione lambda non viene assegnato un nome, non è possibile farvi riferimento in un secondo momento. Tuttavia, l'assegnazione dell'espressione lambda a una variabile e l'aggiunta del gestore tramite questa variabile consente di rimuovere il gestore usando questa variabile.
Nota
Per gli eventi personalizzati, l'istruzione AddHandler
richiama la funzione di accesso AddHandler
dell'evento. Per altre informazioni sugli eventi personalizzati, vedere Istruzione Event.
Esempio
Sub TestEvents()
Dim Obj As New Class1
' Associate an event handler with an event.
AddHandler Obj.Ev_Event, AddressOf EventHandler
' Call the method to raise the event.
Obj.CauseSomeEvent()
' Stop handling events.
RemoveHandler Obj.Ev_Event, AddressOf EventHandler
' This event will not be handled.
Obj.CauseSomeEvent()
' Associate an event handler with an event, using a lambda.
' This handler cannot be removed.
AddHandler Obj.Ev_Event, Sub ()
MsgBox("Lambda caught event.")
End Sub
' This event will be handled by the lambda above.
Obj.CauseSomeEvent()
End Sub
Sub EventHandler()
' Handle the event.
MsgBox("EventHandler caught event.")
End Sub
Public Class Class1
' Declare an event.
Public Event Ev_Event()
Sub CauseSomeEvent()
' Raise an event.
RaiseEvent Ev_Event()
End Sub
End Class