Freigeben über


Übersicht über Ereignisse (Windows Forms)

Ein Ereignis ist eine Aktion, auf die Sie mittels Code reagieren können bzw. die im Code verarbeitet werden kann. Ereignisse werden durch Benutzeraktionen generiert, z. B. durch Klicken mit der Maus oder Drücken einer Taste, durch Programmcode oder durch das System.

Ereignisgesteuerte Anwendungen führen Code als Reaktion auf ein Ereignis aus. Jedes Formular und Steuerelement verfügt über ein vordefiniertes Set von Ereignissen, zu deren Verarbeitung der entsprechende Code programmiert werden kann. Sobald ein Ereignis eintritt und der damit verknüpfte Ereignishandler über den erforderlichen Code verfügt, wird der Code aufgerufen.

Obwohl die von einem Objekt ausgelösten Ereignistypen variieren können, verfügen die meisten Steuerelemente über dieselben Ereignistypen. Von den meisten Objekten wird beispielsweise ein Click-Ereignis behandelt. Wenn ein Benutzer auf ein Formular klickt, wird Code im Click-Ereignishandler des Formulars ausgeführt.

Tipp

Viele Ereignisse treten in Verbindung mit anderen Ereignissen auf. So treten im Verlauf des DoubleClick-Ereignisses z. B. auch die Ereignisse MouseDown, MouseUp und Click auf.

Informationen zum Auslösen und Behandeln von Ereignissen finden Sie unter Gewusst wie: Auslösen und Behandeln von Ereignissen. Ein Beispiel zum Verbinden von Ereignishandlern und Methoden finden Sie unter Gewusst wie: Verbinden von Ereignishandlermethoden mit Ereignissen.

Delegaten und ihre Rolle

Delegaten sind Klassen, die in .NET Framework häufig zum Erstellen von Ereignisbehandlungsmechanismen verwendet werden. Annähernd lassen sich Delegaten mit den Funktionszeigern vergleichen, die vielfach in Visual C++ und anderen objektorientierten Programmiersprachen eingesetzt werden. Delegaten sind im Gegensatz zu Funktionszeigern jedoch objektorientiert und typsicher und bieten allgemein eine größere Sicherheit. Während ein Funktionszeiger lediglich einen Verweis auf eine bestimmte Funktion enthält, umfasst ein Delegat einen Verweis auf ein Objekt und verweist darüber hinaus auf eine oder mehrere Methoden innerhalb des Objekts.

Dieses Ereignismodell verwendet Delegaten, um Ereignisse an die Methoden zu binden, durch die sie verarbeitet werden. Der Delegat ermöglicht es anderen Klassen, sich durch Angabe einer Handlermethode für die Ereignisbenachrichtigung zu registrieren. Sobald das Ereignis eintritt, wird die gebundene Methode vom Delegat aufgerufen. Weitere Informationen zum Definieren von Delegaten finden Sie unter Ereignisse und Delegaten.

Delegaten können an einzelne oder mehrere Methoden gebunden werden. Letzteres wird als Multicasting bezeichnet. Beim Erstellen eines Delegaten für ein Ereignis richten Sie (bzw. der Windows Forms-Designer) normalerweise ein Multicastereignis ein. Ein Ereignis, das die Ausführung einer spezifischen Prozedur (z. B. die Anzeige eines Dialogfelds) bewirkt, die sich nicht mehrmals pro Ereignis logisch wiederholt, stellt eine eher seltene Ausnahme von dieser Regel dar. Informationen zum Erstellen von Multicastdelegaten finden Sie unter Gewusst wie: Kombinieren von Delegaten (Multicastdelegaten) (C#-Programmierhandbuch).

Ein Multicastdelegat verwaltet eine Aufrufliste der Methoden, an die er gebunden ist. Der Multicastdelegat unterstützt eine Combine-Methode zum Hinzufügen von Methoden zur Aufrufliste und eine Remove-Methode zum Entfernen von Methoden.

Sobald die Anwendung ein Ereignis aufzeichnet, löst das Steuerelement das Ereignis aus, indem es den Delegaten für dieses Ereignis aufruft. Der Delegat wiederum ruft die gebundene Methode auf. Im Normalfall (bei Verwendung eines Multicastdelegaten) ruft der Delegat die einzelnen gebundenen Methoden in der Aufrufliste nacheinander auf, was in einer 1:n-Benachrichtigung resultiert. Diese Strategie hat zur Folge, dass das Steuerelement keine Liste von Zielobjekten für die Ereignisbenachrichtigung benötigt, da sämtliche Registrierungen und Benachrichtigungen vom Delegaten ausgeführt werden.

Delegaten bieten zusätzlich die Möglichkeit, mehrere Ereignisse an dieselbe Methode zu binden, wodurch eine n:1-Benachrichtigung erfolgt. Beispielsweise kann durch ein Click-Ereignis auf eine Schaltfläche und durch ein Click-Ereignis auf einen Menübefehl derselbe Delegat aufgerufen werden. Der Delegat ruft daraufhin eine einzelne Methode auf, um diese getrennten Ereignisse auf dieselbe Weise zu behandeln.

Der mit Delegaten verwendete Bindungsmechanismus ist dynamisch: Ein Delegat kann zur Laufzeit an eine beliebige Methode gebunden werden, deren Signatur mit der des Ereignishandlers übereinstimmt. Mit diesem Feature können Sie die gebundene Methode abhängig von einer Bedingung einrichten oder ändern und Ereignishandler dynamisch mit Steuerelementen verknüpfen.

Siehe auch

Konzepte

Übersicht über Ereignishandler (Windows Forms)

Weitere Ressourcen

Erstellen von Ereignishandlern in Windows Forms