Megosztás a következőn keresztül:


AddHandler utasítás

Esemény társítása egy eseménykezelővel futásidőben.

Syntax

AddHandler event, {AddressOf eventhandler | expression }

Részek

Része Leírás
event A kezelni kívánt esemény neve.
eventhandler Az eseményt kezelő eljárás neve.
expression Egy lambda kifejezés, amely kezeli az eseményt.

A részek AddressOf eventhandler , és expression kölcsönösen kizárják.

Megjegyzések

RemoveHandler Az AddHandler és az utasítások lehetővé teszik az eseménykezelés elindítását és leállítását a program végrehajtása során bármikor.

Az új eseménykezelő aláírásának (az eventhandler eljárásnak vagy a expression lambda-nak) meg kell egyeznie az esemény eventaláírásával.

A Handles kulcsszó és az AddHandler utasítás egyaránt lehetővé teszi annak megadását, hogy bizonyos eljárások kezeljenek bizonyos eseményeket, de vannak különbségek. Az AddHandler utasítás az eljárásokat futtatáskor kapcsolja össze az eseményekhez. Az eljárás definiálásakor használja a Handles kulcsszót annak megadásához, hogy az egy adott eseményt kezelje. További információ: Leírók.

Az explicit lambdával hozzáadott kezelő nem távolítható el később (a használatával RemoveHandler). Valójában, ha a lambda nem kap nevet, később nem lehet hivatkozni rá. A lambda változóhoz való hozzárendelése és a kezelő ezen a változón keresztüli hozzáadása lehetővé teszi a kezelő eltávolítását ezzel a változóval.

Feljegyzés

Egyéni események esetén az AddHandler utasítás meghívja az esemény tartozékát AddHandler . Az egyéni eseményekről további információt az Eseményutasítás című témakörben talál.

Példa

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

Lásd még