Share via


Ereignisse und Ereignisbehandlung für Visual Basic 6.0-Benutzer

Aktualisiert: November 2007

Wenn Sie mit Ereignissen und der Ereignisbehandlung in Visual Basic 6.0 vertraut sind, erscheint das Ereignismodell von Visual Basic 2008 anfangs möglicherweise ungewohnt. Letztlich ist es jedoch einfacher und weitaus leistungsfähiger.

Konzeptionelle Unterschiede

In Visual Basic 6.0 sind Ereignisse an bestimmte Objekte gebunden und verfügen über einen eigenen Ereignisbehandlungscode. Beispielsweise hat auf einem Formular mit einer Schaltfläche und einem Menü jedes Element ein eigenes Click-Ereignis. Sie müssen für jedes Element im Ereignishandler Code schreiben, selbst wenn zwei Elemente genau die gleiche Funktion ausführen.

' Visual Basic 6.0 
Private Sub HelpButton_Click()
    HelpButton.Caption = "Help me!"
End Sub
Private Sub HelpMenu_Click()
    HelpMenu.Caption = "Help me!"
End Sub

In Visual Basic 2008 sind Ereignisse über Delegaten an Ereignishandler gebunden, sodass Sie einen Ereignishandler für mehrere Objekte erstellen können.

Private Sub HelpButton_Click(ByVal sender As Object, ByVal e As _
System.EventArgs) Handles HelpButton.Click, HelpMenu.Click
    sender.Text = "Help me!"
End Sub

Beachten Sie, dass die Ereignisdeklaration im obigen Beispiel über eine Handles-Klausel verfügt. Diese definiert, wie Ereignisse behandelt werden, in diesem Fall die Click-Ereignisse für das HelpButton-Objekt und das HelpMenu-Objekt. Die Objekte und Ereignisse müssen nicht vom gleichen Typ sein. Beispielsweise kann ein einzelner Ereignishandler das Click-Ereignis einer Schaltfläche, das DoubleClick-Ereignis eines Textfelds sowie das Tick-Ereignis eines Zeitgebers behandeln.

Beachten Sie auch, dass die Ereignisdeklaration zwei Parameter enthält: ByVal sender As Object und ByVal e As System.EventArgs. Der erste Parameter sender liefert einen Verweis auf das Objekt, durch das das Ereignis ausgelöst wurde. Der zweite Parameter e übergibt ein für das behandelte Ereignis spezifisches Objekt. Durch einen Verweis auf die Objekteigenschaften (und ggf. auf dessen Methoden) können Sie Informationen abrufen: Bei Mausereignissen beispielsweise die Position des Mauszeigers oder bei Drag & Drop-Ereignissen die verschobenen Daten.

Im folgenden Beispiel stellt der MouseDown-Ereignishandler mithilfe des sender-Parameters den Typ des Objekts fest, das das Ereignis ausgelöst hat. Wenn es sich bei diesem Objekt um eine PictureBox handelt, wird mit dem e-Parameter eine Bezeichnung an die Stelle verschoben, auf die geklickt wurde. Um dieses Beispiel zu duplizieren, fügen Sie einem Formular zwei PictureBox-Steuerelemente und ein Label-Steuerelement hinzu.

Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As _
System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown, _
PictureBox1.MouseDown, PictureBox2.MouseDown

    If TypeOf sender Is PictureBox Then
        Label1.Location = sender.Location + e.Location
    Else
        MsgBox("Please click a picture")
    End If
End Sub

Jedes Ereignis generiert in der Regel einen Ereignishandler, der für den zweiten Parameter einen anderen Ereignisobjekttyp verwendet. Bei einigen Ereignishandlern, z. B. denen für das MouseDown-Ereignis und das MouseUp-Ereignis, ist der Objekttyp (MouseEventArgs) für den zweiten Parameter identisch. Für diese Ereignistypen kann derselbe Ereignishandler zur Behandlung beider Ereignisse verwendet werden.

Für Ereignisse, die andere Ereignisobjekttypen übergeben, müssen Sie separate Ereignishandler erstellen. Beispielsweise übergibt das TextChanged-Ereignis eines TextBox-Steuerelements das generische EventArgs-Ereignisobjekt, und das MouseDown-Ereignis übergibt das etwas speziellere MouseEventArgs-Ereignisobjekt. Das MouseEventArgs-Objekt enthält Eigenschaften, die speziell auf Mausereignisse wie Button bezogen sind und mit denen festgestellt werden kann, welche Maustaste gedrückt wurde. Diese Eigenschaften können nicht auf das TextBox-Steuerelement angewendet werden, und bei einem Verweis darauf wird ein Fehler verursacht.

Neben den konzeptionellen Unterschieden in der Ereignisbehandlung sind die Namen und das Verhalten einiger Ereignisse und zahlreicher Objekte in Visual Basic 2008 unterschiedlich. Weitere Informationen finden Sie unter Windows Forms-Steuerelemente für Visual Basic 6.0-Benutzer.

Siehe auch

Konzepte

Übersicht über Ereignishandler (Windows Forms)

Weitere Ressourcen

Erstellen von Ereignishandlern in Windows Forms