Gewusst wie: Aufrufen eines Ereignishandlers in Visual Basic
Ereignisse sind Aktionen oder Vorkommnisse, z. B. ein Mausklick oder das Überschreiten eines Kreditrahmens, die von einem Objekt erkannt werden und für die Sie Code schreiben können, der darauf reagiert. Ein Ereignishandler ist der Code, der auf diese Ereignisse reagiert.
In Visual Basic ist ein Ereignishandler eine Sub-Prozedur. Sie rufen Ereignishandler aber normalerweise nicht auf die gleiche Weise wie andere Sub-Prozeduren auf. Stattdessen identifizieren Sie die Prozedur als Handler für das Ereignis. Sie können dies entweder mit einer Handles-Klausel (Visual Basic)-Klausel und einer WithEvents (Visual Basic)-Variablen oder mit einer AddHandler-Anweisung tun. Standardmäßig werden in Visual Basic Ereignishandler mit einer Handles-Klausel deklariert. Auf diese Weise werden Ereignishandler von den Designern geschrieben, wenn Sie in der integrierten Entwicklungsumgebung (IDE) programmieren. Die AddHandler-Anweisung eignet sich dazu, Ereignisse dynamisch zur Laufzeit auszulösen.
Wenn das Ereignis eintritt, ruft Visual Basic automatisch die Ereignishandlerprozedur auf. Jeglicher Code, der Zugriff auf das Ereignis hat, kann durch die Ausführung einer RaiseEvent-Anweisung das Ereignis auslösen.
Sie können einem Ereignis mehrere Ereignishandler zuordnen. In einigen Fällen können Sie die Zuordnung zwischen einem Handler und einem Ereignis aufheben. Weitere Informationen hierzu finden Sie unter Ereignisse (Visual Basic).
So rufen Sie mit Handles und WithEvents einen Ereignishandler auf
Stellen Sie sicher, dass das Ereignis mit einer Event-Anweisung deklariert wird.
Deklarieren Sie mit dem WithEvents (Visual Basic)-Schlüsselwort eine Objektvariable auf Modul- oder Klassenebene. Die As-Klausel für diese Variable muss die Klasse angeben, die das Ereignis auslöst.
Fügen Sie der Sub-Prozedur, die als Ereignishandler fungiert, eine Handles-Klausel (Visual Basic)-Klausel ein, die die WithEvents-Variable und den Ereignisnamen enthält.
Wenn das Ereignis eintritt, ruft Visual Basic automatisch die Sub-Prozedur auf. Im Code kann eine RaiseEvent-Anweisung zum Auslösen des Ereignisses verwendet werden.
Im folgenden Beispiel werden ein Ereignis und eine WithEvents-Variable definiert, die auf die Klasse verweist, welche das Ereignis auslöst. In der Sub-Prozedur, die als Ereignishandler fungiert, wird eine Handles-Klausel verwendet, um die Klasse und das Ereignis anzugeben, die verarbeitet werden.
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
So rufen Sie mit AddHandler einen Ereignishandler auf
Stellen Sie sicher, dass das Ereignis mit einer Event-Anweisung deklariert wird.
Führen Sie eine AddHandler-Anweisung aus, um die ereignisbehandelnde Sub-Prozedur dynamisch dem Ereignis zuzuordnen.
Wenn das Ereignis eintritt, ruft Visual Basic automatisch die Sub-Prozedur auf. Im Code kann eine RaiseEvent-Anweisung zum Auslösen des Ereignisses verwendet werden.
Im folgenden Beispiel wird eine Sub-Prozedur definiert, die das Closing-Ereignis eines Formulars behandelt. Dann wird die catchClose-Prozedur mithilfe der AddHandler-Anweisung als Ereignishandler für Closing zugeordnet.
' 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
Durch die Ausführung der RemoveHandler-Anweisung kann die Zuordnung zwischen einem Ereignishandler und einem Ereignis aufgehoben werden.
Siehe auch
Aufgaben
Gewusst wie: Erstellen einer Prozedur (Visual Basic)
Gewusst wie: Aufrufen einer Prozedur, die keinen Wert zurückgibt (Visual Basic)
Referenz
AddressOf-Operator (Visual Basic)