WithEvents y la cláusula Handles

Actualización: noviembre 2007

La instrucción WithEvents y la cláusula Handles proporcionan una forma declarativa de especificar controladores de eventos. Los eventos provocados por un objeto declarado con la palabra clave WithEvents pueden controlarse mediante cualquier procedimiento con una instrucción Handles para ese evento, tal y como se muestra en el ejemplo siguiente:

' Declare a WithEvents variable.
Dim WithEvents EClass As New EventClass

' Call the method that raises the object's events.
Sub TestEvents()
    EClass.RaiseEvents()
End Sub

' Declare an event handler that handles multiple events.
Sub EClass_EventHandler() Handles EClass.XEvent, EClass.YEvent
    MsgBox("Received Event.")
End Sub

Class EventClass
    Public Event XEvent()
    Public Event YEvent()
    ' RaiseEvents raises both events.
    Sub RaiseEvents()
        RaiseEvent XEvent()
        RaiseEvent YEvent()
    End Sub
End Class

La instrucción WithEvents y la cláusula Handles son a menudo la mejor opción para los controladores de eventos, ya que la sintaxis declarativa que utilizan hace que el control de eventos sea más sencillo de codificar, leer y depurar. No obstante, tenga en cuenta las siguientes limitaciones en la utilización de las variables WithEvents:

  • No se puede utilizar una variable WithEvents como variable de objeto. Es decir, no es posible declararla como Object; se debe especificar el nombre de clase al declarar la variable.

  • Dado que los eventos compartidos no están asociados a instancias de clase, no se puede usar WithEvents para controlar los eventos mediante declaraciones compartidas. De forma parecida, no se puede utilizar WithEvents ni Handles para controlar los eventos desde una estructura Structure. En ambos casos, puede utilizar la instrucción AddHandler para controlar esos eventos.

  • No se pueden crear matrices de variables WithEvents.

  • Las variables WithEvents permiten que un solo controlador controle uno o más tipos de eventos, así como que uno o más controladores de eventos controlen el mismo tipo de evento.

Vea también

Conceptos

AddHandler y RemoveHandler

Referencia

Handles

WithEvents

AddHandler (Instrucción)