AddHandler (Instrucción)
Asocia un evento a un controlador de eventos en tiempo de ejecución.
Sintaxis
AddHandler event, {AddressOf eventhandler | expression }
Partes
Parte | Descripción |
---|---|
event |
Nombre del evento que se quiere controlar. |
eventhandler |
Nombre de un procedimiento que controla el evento. |
expression |
Expresión lambda que controla el evento. |
Las partes AddressOf eventhandler
y expression
se excluyen mutuamente.
Comentarios
Las instrucciones AddHandler
y RemoveHandler
permiten iniciar y detener el control de eventos en cualquier momento durante la ejecución del programa.
La firma del nuevo controlador de eventos (el procedimiento eventhandler
o la expresión lambda expression
) debe coincidir con la firma del evento event
.
La palabra clave Handles
y la instrucción AddHandler
permiten especificar que determinados procedimientos controlen eventos determinados, pero hay diferencias. La instrucción AddHandler
conecta los procedimientos a los eventos en tiempo de ejecución. Use la palabra clave Handles
al definir un procedimiento para especificar que controla un evento determinado. Para obtener más información, consulte Handles.
Un controlador agregado con una expresión lambda explícita no se puede quitar más adelante (mediante RemoveHandler
). De hecho, si a la expresión lambda no se le asigna un nombre, no es posible hacer referencia a ella más adelante. Pero asignar la expresión lambda a una variable y agregar el controlador mediante esta variable permite quitar el controlador con esta variable.
Nota
En el caso de los eventos personalizados, la instrucción AddHandler
invoca el descriptor de acceso del evento AddHandler
. Para obtener más información acerca de los eventos personalizados, consulte Event (Instrucción).
Ejemplo
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