Dela via


AddHandler-instruktion

Associerar en händelse med en händelsehanterare vid körning.

Syntax

AddHandler event, {AddressOf eventhandler | expression }

Delar

Delvis beskrivning
event Namnet på den händelse som ska hanteras.
eventhandler Namnet på en procedur som hanterar händelsen.
expression Ett lambda-uttryck som hanterar händelsen.

Delarna AddressOf eventhandler och expression är ömsesidigt uteslutande.

Kommentarer

Med AddHandler instruktionerna och RemoveHandler kan du starta och stoppa händelsehantering när som helst under programkörningen.

Signaturen för den nya händelsehanteraren (proceduren eventhandler eller expression lambda) måste matcha signaturen för händelsen event.

Med Handles nyckelordet och -instruktionen AddHandler kan du ange att vissa procedurer hanterar vissa händelser, men det finns skillnader. Instruktionen AddHandler ansluter procedurer till händelser vid körning. Använd nyckelordet Handles när du definierar en procedur för att ange att den hanterar en viss händelse. Mer information finns i Referenser.

En hanterare som har lagts till med en explicit lambda KAN INTE tas bort senare (med ).RemoveHandler Om lambda inte får ett namn, är det inte möjligt att hänvisa till det senare. Men om du tilldelar lambda till en variabel och lägger till hanteraren via den här variabeln kan du ta bort hanteraren med hjälp av den här variabeln.

Kommentar

För anpassade händelser AddHandler anropar -instruktionen händelsens AddHandler accessor. Mer information om anpassade händelser finns i Händelseuttryck.

Exempel

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

Se även