Freigeben über


AddHandler-Anweisung

Ordnet ein Ereignis einem Ereignishandler zur Laufzeit zu.

Syntax

AddHandler event, {AddressOf eventhandler | expression }

Bestandteile

Teil Beschreibung
event Der Name des zu behandelnden Ereignisses.
eventhandler Der Name einer Prozedur, die das Ereignis behandelt.
expression Ein Lambda-Ausdruck, der das Ereignis behandelt.

Die Teile AddressOf eventhandler und expression schließen sich gegenseitig aus.

Bemerkungen

Mit den AddHandler- und RemoveHandler-Anweisungen können Sie die Ereignisbehandlung während der Programmausführung jederzeit starten und beenden.

Die Signatur des neuen Ereignishandlers (die eventhandler Prozedur oder expression lambda) muss mit der Signatur des Ereignisses event übereinstimmen.

Mit dem Schlüsselwort Handles und der Anweisung AddHandler können Sie angeben, dass diese bestimmten Prozeduren bestimmte Ereignisse verarbeiten. Es bestehen jedoch keine Unterschiede. Die Anweisung AddHandler verbindet Prozeduren zur Laufzeit mit Ereignissen. Verwenden Sie das Schlüsselwort Handles, wenn Sie eine Prozedur definieren, um anzugeben, dass sie ein bestimmtes Ereignis verarbeitet. Weitere Informationen finden Sie in Handles.

Ein Handler, der mit einer expliziten Lambda-Funktion hinzugefügt wurde, kann später (mithilfe von RemoveHandler) nicht entfernt werden. Wenn die Lambda-Funktion keinen Namen erhält, ist es nicht möglich, später darauf zu verweisen. Das Zuweisen der Lambda-Funktion zu einer Variablen und das Hinzufügen des Handlers über diese Variable ermöglicht jedoch das Entfernen des Handlers mithilfe dieser Variablen.

Hinweis

Bei benutzerdefinierten Ereignissen ruft die AddHandler-Anweisung die AddHandler-Zugriffsmethode des Ereignisses auf. EreignisWeitere Informationen über benutzerdefinierte Ereignisse finden Sie unter Event-Anweisung.

Beispiel

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

Siehe auch