Genauere Betrachtung: Freigeben eines Ereignishandlers

Aktualisiert: November 2007

In dieser Lektion erfahren Sie, wie Sie einen freigegebenen Ereignishandler erstellen können, der Ereignisse für mehr als ein Steuerelement behandelt.

In der vorigen Lektion, Einrichten von Programmreaktionen auf Benutzeraktionen: Erstellen eines Ereignishandlers, haben Sie gelernt, Code für ein Button-Steuerelement als Antwort auf die Ereignisse MouseEnter und MouseLeave zu schreiben. Aber was ist erforderlich, wenn Sie über zwei oder mehr Button-Steuerelemente verfügen und für alle dieselbe Meldung angezeigt werden soll? Sie könnten Code in die Ereignishandler der einzelnen Steuerelemente schreiben. Glücklicherweise gibt es jedoch einen einfacheren Weg.

Wenn Sie sich die Ereignishandlermethoden für das MouseEnter-Ereignis jedoch genauer betrachten, werden Sie bemerken, dass die Method-Deklaration (Private Sub Button1_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.MouseEnter) eine Handles-Klausel (Handles Button1.MouseEnter) enthält. Es überrascht nicht, dass das Handles-Schlüsselwort dem Ereignishandler mitteilt, welche Ereignisse er behandeln soll.

Um einen Ereignishandler für mehrere Steuerelemente freizugeben, müssen Sie lediglich die Namen der zusätzlichen Steuerelemente hinzufügen, die behandelt werden sollen. Der Ereignishandler wird dann benachrichtigt, wenn das jeweilige Ereignis für eines dieser Steuerelemente auftritt. Wenn Sie beispielsweise zwei Button-Steuerelemente besitzen und für beide denselben Ereignishandler verwenden möchten, würde die Handles-Klausel folgendermaßen aussehen:

Handles Button1.MouseEnter, Button2.MouseEnter.

Sie verfügen jetzt über eine einzelne Methode zur Behandlung des MouseEnter-Ereignisses für beide Steuerelemente. Auf welche Weise erfährt der Handler jedoch, durch welches Steuerelement das Ereignis ausgelöst wurde? Wenn Sie die Method-Deklaration noch einmal genauer betrachten, wird Ihnen die Klausel ByVal sender As Object auffallen. Durch das Sender-Schlüsselwort wird dem Ereignishandler mitgeteilt, welches Objekt (in diesem Fall welches Steuerelement) das Ereignis ausgelöst hat.

Übung

So geben Sie einen Ereignishandler frei

  1. Öffnen Sie das in der vorigen Lektion erstellte EventHandler-Projekt. Wenn Sie das Projekt nicht gespeichert haben, müssen Sie zuerst zur vorherigen Lektion, Einrichten von Programmreaktionen auf Benutzeraktionen: Erstellen eines Ereignishandlers, zurückkehren und die Prozeduren in der Lektion abschließen.

  2. Wählen Sie im Projektmappen-Explorer die Option Form1.vb und anschließend im Menü Ansicht die Option Designer aus.

  3. Ziehen Sie ein weiteres Button-Steuerelement aus der Toolbox auf das Formular.

  4. Legen Sie im Eigenschaftenfenster die AutoSize-Eigenschaft auf True fest.

  5. Klicken Sie im Menü Ansicht auf Code, um den Code-Editor zu öffnen.

  6. Ändern Sie in der Button1_MouseEnter-Methodendeklaration (Private Sub Button1_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.MouseEnter) die Handles-Klausel in Handles Button1.MouseEnter, Button2.MouseEnter.

  7. Ersetzen Sie im Text der Ereignisdeklaration den Code wie folgt.

    If sender.Equals(Button1) Then
      Button1.Text = "The mouse has entered Button1"
    Else
      Button2.Text = "The mouse has entered Button2"
    End If
    

    Mithilfe des Codes wird geprüft, ob es sich beim Absender um Button1 handelt. Wenn dies der Fall ist, wird die Text-Eigenschaft von Button1 aktualisiert. Wenn dies nicht der Fall ist, wird die Text-Eigenschaft von Button2 aktualisiert.

  8. Ändern Sie in der Button1_MouseLeave-Methodendeklaration die Handles-Klausel folgendermaßen.

    Handles Button1.MouseLeave, Button2.MouseLeave.

  9. Ersetzen Sie im Text der Ereignisdeklaration den Code wie folgt.

    sender.Text = "The mouse has left"
    

    In diesem Fall legt der Code die Text-Eigenschaft des Absenders (entweder Button1 oder Button2) auf dieselbe Zeichenfolge fest.

  10. Drücken Sie F5, um die Anwendung auszuführen.

    Wenn Sie den Mauszeiger jetzt über die Schaltfläche bewegen, ändert sich der Text in The mouse has entered ebenso wie der Name der Schaltfläche. Wenn sich der Mauszeiger nicht mehr über der Schaltfläche befindet, ändert sich der Text wieder zurück in The mouse has left.

    Versuchen Sie, dem Formular noch weitere Steuerelemente hinzuzufügen und die Handles-Klauseln für das Einbeziehen der Steuerelemente zu bearbeiten. Sie können auch unterschiedliche Steuerelemente verwenden.

Nächste Schritte

In dieser Lektion haben Sie gelernt, wie Sie einen einzelnen Ereignishandler für mehrere Steuerelemente freigeben können. In der nächsten Lektion lernen Sie, wie Sie zwei neue Arten von Steuerelementen (CheckBox und RadioButton) verwenden, um den Benutzern Auswahlmöglichkeiten zu präsentieren.

Nächste Lektion: Abrufen der Benutzerauswahl: Verwenden von Kontrollkästchen und Optionsfeldern

Siehe auch

Aufgaben

Einrichten von Programmreaktionen auf Benutzeraktionen: Erstellen eines Ereignishandlers