Handles-Klausel (Visual Basic)

Deklariert, dass eine Prozedur ein angegebenes Ereignis behandelt.

Syntax

proceduredeclaration Handles eventlist

Bestandteile

proceduredeclaration Die Sub-Prozedurdeklaration für die Prozedur, die das Ereignis verarbeitet.

eventlist Listet die Ereignisse (durch Kommas getrennt) für proceduredeclaration für die Verarbeitung auf. Die Ereignisse müssen durch die Basisklasse für die aktuelle Klasse oder durch ein mithilfe des Schlüsselworts WithEvents deklariertes Objekt ausgelöst werden.

Bemerkungen

Verwenden Sie das Handles -Schlüsselwort am Ende der Prozedurdeklaration, damit sie Ereignisse verarbeitet, die durch eine mithilfe des Schlüsselworts WithEvents deklarierte Objektvariable ausgelöst wurden. Das Schlüsselwort Handles kann zudem in einer abgeleiteten Klasse verwendet werden, um Ereignisse aus einer Basisklasse zu verarbeiten.

Mit dem Schlüsselwort Handles und der Anweisung AddHandler können Sie angeben, dass diese bestimmten Prozeduren bestimmte Ereignisse verarbeiten. Es bestehen jedoch keine Unterschiede. Verwenden Sie das Schlüsselwort Handles, wenn Sie eine Prozedur definieren, um anzugeben, dass sie ein bestimmtes Ereignis verarbeitet. Die Anweisung AddHandler verbindet Prozeduren zur Laufzeit mit Ereignissen. Weitere Informationen finden Sie unter AddHandler-Anweisung.

Für benutzerdefinierte Ereignisse ruft die Anwendung die AddHandler-Zugriffsmethode des Ereignisses auf, wenn die Prozedur als ein Ereignishandler hinzugefügt wird. Weitere Informationen zu benutzerdefinierten Ereignissen finden Sie unter Event-Anweisung.

Beispiel 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

Im folgenden Beispiel wird gezeigt, wie eine abgeleitete Klasse die Handles-Anweisung zum Verarbeiten eines Ereignisses aus einer Basisklasse verwenden kann.

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

Beispiel 2

Das folgende Beispiel enthält zwei Schaltflächenereignishandler für ein WPF-Anwendungsprojekt.

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

Beispiel 3

Das folgende Beispiel entspricht dem vorherigen Beispiel. Die eventlist in der Handles-Klausel enthält die Ereignisse für beide Tasten.

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

Siehe auch