Handles (Cláusula, Visual Basic)

Declara que un procedimiento controla un evento especificado.

Sintaxis

proceduredeclaration Handles eventlist

Partes

proceduredeclaration La declaración de procedimiento Sub del procedimiento que controlará el evento.

eventlist Lista de los eventos que proceduredeclaration debe controlar, separados por comas. Los eventos deben ser generados bien por la clase base de la clase actual o bien por un objeto declarado mediante la palabra clave WithEvents.

Comentarios

Utilice la palabra clave Handles al final de una declaración de procedimiento para que controle los eventos generados por una variable de objeto declarada mediante el uso de la palabra clave WithEvents . La palabra clave Handles también puede usarse en una clase derivada para controlar eventos de una clase base.

La palabra clave Handles y la instrucción AddHandler permiten especificar que determinados procedimientos controlen eventos determinados, pero hay diferencias. Use la palabra clave Handles al definir un procedimiento para especificar que controla un evento determinado. La instrucción AddHandler conecta los procedimientos a los eventos en tiempo de ejecución. Para obtener más información, consulte AddHandler (Instrucción).

Para los eventos personalizados, la aplicación invoca al descriptor de acceso AddHandler del evento cuando agrega el procedimiento como un controlador de eventos. Para obtener más información acerca de los eventos personalizados, consulte Event (Instrucción).

Ejemplo 1

Public Class ContainerClass
    ' Module or class level declaration.
    WithEvents Obj As New Class1

    Public Class Class1
        ' Declare an event.
        Public Event Ev_Event()
        Sub CauseSomeEvent()
            ' Raise an event.
            RaiseEvent Ev_Event()
        End Sub
    End Class

    Sub EventHandler() Handles Obj.Ev_Event
        ' Handle the event.
        MsgBox("EventHandler caught event.")
    End Sub

    ' Call the TestEvents procedure from an instance of the ContainerClass 
    ' class to test the Ev_Event event and the event handler.
    Public Sub TestEvents()
        Obj.CauseSomeEvent()
    End Sub
End Class

En el siguiente ejemplo se demuestra cómo una clase derivada puede usar la instrucción Handles para controlar un evento de una clase base.

Public Class BaseClass
    ' Declare an event.
    Event Ev1()
End Class
Class DerivedClass
    Inherits BaseClass
    Sub TestEvents() Handles MyBase.Ev1
        ' Add code to handle this event.
    End Sub
End Class

Ejemplo 2

El siguiente ejemplo contiene controladores de eventos de dos botones para un proyecto de Aplicación WPF.

Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click
    MessageBox.Show(sender.Name & " clicked")
End Sub

Private Sub Button2_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button2.Click
    MessageBox.Show(sender.Name & " clicked")
End Sub

Ejemplo 3

El siguiente ejemplo es equivalente al ejemplo anterior. El eventlist en la cláusula Handles contiene los eventos de ambos botones.

Private Sub Button_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click, Button2.Click
    MessageBox.Show(sender.Name & " clicked")
End Sub

Consulte también