AddHandler Statement
Associates an event with an event handler at run time.
Syntax
AddHandler event, {AddressOf eventhandler | expression }
Parts
Part | Description |
---|---|
event |
The name of the event to handle. |
eventhandler |
The name of a procedure that handles the event. |
expression |
A lambda expression that handles the event. |
The parts AddressOf eventhandler
and expression
are mutually exclusive.
Remarks
The AddHandler
and RemoveHandler
statements allow you to start and stop event handling at any time during program execution.
The signature of the new event handler (the eventhandler
procedure or the expression
lambda) must match the signature of the event event
.
The Handles
keyword and the AddHandler
statement both allow you to specify that particular procedures handle particular events, but there are differences. The AddHandler
statement connects procedures to events at run time. Use the Handles
keyword when defining a procedure to specify that it handles a particular event. For more information, see Handles.
A handler added with an explicit lambda CANNOT be removed later (using RemoveHandler
). Indeed, if the lambda is not given a name, it is not possible to reference it later. But assigning the lambda to a variable and adding the handler through this variable allows to remove the handler using this variable.
Note
For custom events, the AddHandler
statement invokes the event's AddHandler
accessor. For more information on custom events, see Event Statement.
Example
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