Sdílet prostřednictvím


AddHandler – příkaz

Přidruží událost k obslužné rutině události za běhu.

Syntaxe

AddHandler event, {AddressOf eventhandler | expression }

Součástky

Část Popis
event Název události, která se má zpracovat.
eventhandler Název procedury, která zpracovává událost.
expression Výraz lambda, který zpracovává událost.

AddressOf eventhandler Části a expression vzájemně se vylučují.

Poznámky

Tyto AddHandler příkazy RemoveHandler umožňují kdykoli během provádění programu spouštět a zastavovat zpracování událostí.

Podpis nové obslužné rutiny události (procedura eventhandlerexpression nebo lambda) musí odpovídat podpisu události event.

Klíčové Handles slovo i AddHandler příkaz umožňují určit, že konkrétní procedury zpracovávají konkrétní události, ale existují rozdíly. Příkaz AddHandler připojuje procedury k událostem za běhu. Handles Klíčové slovo použijte při definování procedury k určení, že zpracovává konkrétní událost. Další informace najdete v tématu Popisovače.

Obslužnou rutinu přidanou s explicitním výrazem lambda nelze později (pomocí RemoveHandler). Pokud není lambda pojmenována, není však možné na ni později odkazovat. Přiřazení lambda k proměnné a přidání obslužné rutiny prostřednictvím této proměnné však umožňuje odebrat obslužnou rutinu pomocí této proměnné.

Poznámka:

U vlastních událostí vyvolá AddHandler příkaz přístupové objekty AddHandler události. Další informace o vlastních událostech najdete v tématu Příkaz události.

Příklad

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

Viz také