Cómo: Llamar a un controlador de eventos en Visual Basic

Actualización: noviembre 2007

Un evento es una acción o un suceso (por ejemplo, cuando se hace clic con el mouse o cuando se supera un límite de crédito) que reconoce algún componente del programa y para el cual puede escribirse un código de respuesta. Un controlador de eventos es el código que se escribe para responder a un evento.

En Visual Basic, un controlador de eventos es un procedimiento Sub. Sin embargo, normalmente no se llama a este procedimiento del mismo modo que a otros procedimientos Sub; sino que se identifica el procedimiento como un controlador del evento. Esto puede hacerse con una cláusula Handles y una variable WithEvents o con una instrucción AddHandler (Instrucción). En Visual Basic, de manera predeterminada se utiliza una cláusula Handles para declarar un controlador de eventos. Ésta es la técnica que utilizan los diseñadores para escribir los controladores de eventos cuando programan en el entorno de desarrollo integrado (IDE). La instrucción AddHandler resulta conveniente para desencadenar eventos de forma dinámica en tiempo de ejecución.

Cuando se produce el evento, Visual Basic llama automáticamente al procedimiento del controlador de eventos. Cualquier código que tenga acceso al evento puede hacer que éste se desencadene ejecutando RaiseEvent (Instrucción).

Puede asociar más de un controlador de eventos al mismo evento. En algunos casos, puede desasociar un controlador de un evento. Para obtener más información, vea Eventos en Visual Basic.

Para llamar a un controlador de eventos utilizando Handles y WithEvents

  1. Asegúrese de que el evento se declara con una instrucción Event (Instrucción).

  2. Declare una variable de objeto en el nivel de módulo o de clase utilizando la palabra clave WithEvents. La cláusula As de esta variable debe especificar la clase que produce el evento.

  3. En la declaración del procedimiento Sub de control de eventos, agregue una cláusula Handles que especifique la variable WithEvents y el nombre del evento.

  4. Cuando se produce el evento, Visual Basic llama automáticamente al procedimiento Sub. El código puede utilizar una instrucción RaiseEvent para desencadenar el evento.

    En el ejemplo siguiente se define un evento y una variable WithEvents que hace referencia a la clase que desencadena el evento. El procedimiento Sub de control de eventos utiliza una cláusula Handles para especificar la clase y el evento que ésta controla.

    Public Class raisesEvent
        Public Event somethingHappened()
        Dim WithEvents happenObj As New raisesEvent
        Public Sub processHappen() Handles happenObj.somethingHappened
            ' Insert code to handle somethingHappened event.
        End Sub
    End Class
    

Para llamar a un controlador de eventos utilizando AddHandler

  1. Asegúrese de que el evento se declara con una instrucción Event.

  2. Ejecute una instrucción AddHandler (Instrucción) para conectar de forma dinámica el procedimiento Sub de control de eventos con el evento.

  3. Cuando se produce el evento, Visual Basic llama automáticamente al procedimiento Sub. El código puede utilizar una instrucción RaiseEvent para desencadenar el evento.

    En el ejemplo siguiente se define un procedimiento Sub que controla el evento Closing de un formulario. A continuación, utiliza la instrucción AddHandler (Instrucción) para asociar el procedimiento catchClose como un controlador del evento Closing.

    ' Place these procedures inside a Form class definition.
    Private Sub catchClose(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs)
        ' Insert code to deal with impending closure of this form.
    End Sub
    Public Sub formOpened()
        AddHandler Me.Closing, AddressOf catchClose
    End Sub
    

    Puede desasociar un controlador de eventos de un evento ejecutando RemoveHandler (Instrucción).

Vea también

Tareas

Cómo: crear un procedimiento

Cómo: Llamar a un procedimiento que no devuelve un valor

Conceptos

Procedimientos en Visual Basic

Procedimientos Sub

Referencia

Instrucción Sub (Visual Basic)

AddressOf (Operador)