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

  1. Stellen Sie sicher, dass das Ereignis mit einer Event-Anweisung deklariert wird.

  2. 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.

  3. 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.

  4. 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

  1. Stellen Sie sicher, dass das Ereignis mit einer Event-Anweisung deklariert wird.

  2. Führen Sie eine AddHandler-Anweisung aus, um die ereignisbehandelnde Sub-Prozedur dynamisch dem Ereignis zuzuordnen.

  3. 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

Sub-Anweisung (Visual Basic)

AddressOf-Operator (Visual Basic)

Konzepte

Prozeduren in Visual Basic

Sub-Prozeduren (Visual Basic)