AddHandler — Instrukcja
Kojarzy zdarzenie z programem obsługi zdarzeń w czasie wykonywania.
Składnia
AddHandler event, {AddressOf eventhandler | expression }
generatora
Element | opis |
---|---|
event |
Nazwa zdarzenia do obsługi. |
eventhandler |
Nazwa procedury obsługującej zdarzenie. |
expression |
Wyrażenie lambda obsługujące zdarzenie. |
AddressOf eventhandler
Części i expression
wzajemnie się wykluczają.
Uwagi
Instrukcje AddHandler
i RemoveHandler
umożliwiają uruchamianie i zatrzymywanie obsługi zdarzeń w dowolnym momencie podczas wykonywania programu.
Podpis nowej procedury obsługi zdarzeń ( eventhandler
procedura lub expression
lambda) musi być zgodny z podpisem zdarzenia event
.
Słowo Handles
kluczowe i AddHandler
instrukcja umożliwiają określenie, że określone procedury obsługują określone zdarzenia, ale istnieją różnice. Instrukcja AddHandler
łączy procedury z zdarzeniami w czasie wykonywania. Użyj słowa kluczowego Handles
podczas definiowania procedury, aby określić, że obsługuje określone zdarzenie. Aby uzyskać więcej informacji, zobacz Handles (Obsługa).
Procedura obsługi dodana z jawnym elementem lambda NIE MOŻE zostać usunięta później (przy użyciu polecenia RemoveHandler
). Rzeczywiście, jeśli lambda nie ma nazwy, nie można odwoływać się do niej później. Jednak przypisanie lambda do zmiennej i dodanie procedury obsługi za pomocą tej zmiennej umożliwia usunięcie programu obsługi przy użyciu tej zmiennej.
Uwaga
W przypadku zdarzeń niestandardowych instrukcja AddHandler
wywołuje metodę dostępu zdarzenia AddHandler
. Aby uzyskać więcej informacji na temat zdarzeń niestandardowych, zobacz Event Statement (Instrukcja zdarzenia).
Przykład
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