Compartir vía


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

Consulte también