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

Zobacz też