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