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

Vedi anche