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 event
aláí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