WithEvents und die Handles-Klausel
Aktualisiert: November 2007
Mit der WithEvents-Anweisung und der Handles-Klausel können Sie Ereignishandler per Deklaration angeben. Ein Ereignis, das durch ein Objekt ausgelöst wird, das mit dem WithEvents-Schlüsselwort deklariert wurde, kann von einer beliebigen Prozedur mit einer Handles-Anweisung für dieses Ereignis behandelt werden (siehe folgendes Beispiel):
' 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
Die WithEvents-Anweisung und die Handles-Klausel sind häufig die beste Kombination für Ereignishandler, da die hier verwendete Deklarationssyntax das Kodieren, Lesen und Debuggen der Ereignisbehandlung vereinfacht. Beachten Sie jedoch die folgenden Beschränkungen bei der Verwendung von WithEvents-Variablen:
Sie können eine WithEvents-Variable nicht als Objektvariable verwenden. Dies bedeutet, Sie können die Variable nicht als Object deklarieren, sondern Sie müssen den Klassennamen angeben, wenn Sie die Variable deklarieren.
Da freigegebene Ereignisse nichtan Klasseninstanzen gebunden sind, können Sie WithEvents nicht für die deklarative Behandlung freigegebener Ereignisse verwenden. Ebenso können Sie WithEvents oder Handles nicht zum Behandeln von Ereignissen aus einer Structure verwenden. In beiden Fällen können Sie diese Ereignisse mit der AddHandler-Anweisung behandeln.
Sie können keine Arrays aus WithEvents-Variablen erstellen.
Mit WithEvents-Variablen kann ein einziger Ereignishandler eine oder mehrere Ereignisarten bzw. einen oder mehrere Ereignishandler zur Behandlung derselben Art von Ereignissen behandeln.