Compartir a través de


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

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 (Cláusula, Visual Basic) y una variable WithEvents (Visual Basic) 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 (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 (Visual Basic). 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 (Cláusula, Visual Basic) 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 (Visual Basic)

Cómo: Llamar a un procedimiento que no devuelve un valor (Visual Basic)

Referencia

Sub (Instrucción, Visual Basic)

AddressOf (Operador) (Visual Basic)

Conceptos

Procedimientos en Visual Basic

Subprocedimientos (Visual Basic)