Freigeben über


Übersicht über Ereignisse (Windows Forms)

Bei einem Ereignis handelt es sich um eine Aktion, auf die Sie im Code reagieren oder "behandeln" können. Ereignisse können von einer Benutzeraktion generiert werden, z. B. durch Klicken auf die Maus oder Drücken einer Taste; nach Programmcode; oder vom System.

Ereignisgesteuerte Anwendungen führen Code als Reaktion auf ein Ereignis aus. Jedes Formular und jedes Steuerelement macht einen vordefinierten Satz von Ereignissen verfügbar, mit denen Sie programmieren können. Wenn eines dieser Ereignisse auftritt und code im zugeordneten Ereignishandler vorhanden ist, wird dieser Code aufgerufen.

Die Typen von Ereignissen, die von einem Objekt ausgelöst werden, variieren, aber viele Typen sind für die meisten Steuerelemente üblich. Beispielsweise behandeln die meisten Objekte ein Ereignis Click. Wenn ein Benutzer auf ein Formular klickt, wird Code im Click-Ereignishandler des Formulars ausgeführt.

Anmerkung

Viele Ereignisse treten in Verbindung mit anderen Ereignissen auf. Beispielsweise treten im Verlauf des DoubleClick-Ereignisses die Ereignisse MouseDown, MouseUpund Click auf.

Informationen zum Auslösen und Verwenden eines Ereignisses siehe Ereignisse.

Delegierte und ihre Rolle

Delegates sind Klassen, die im .NET Framework häufig verwendet werden, um Ereignisbehandlungsmechanismen zu erstellen. Delegaten entsprechen etwa Funktionszeigern, die häufig in Visual C++ und anderen objektorientierten Sprachen verwendet werden. Im Gegensatz zu Funktionszeigern sind Delegaten objektorientiert, typsicher und sicher. Wenn ein Funktionszeiger nur einen Verweis auf eine bestimmte Funktion enthält, besteht ein Delegat aus einem Verweis auf ein Objekt und Verweisen auf eine oder mehrere Methoden innerhalb des Objekts.

Dieses Ereignismodell verwendet -Delegaten, um Ereignisse an die Methoden zu binden, die zu ihrer Bearbeitung verwendet werden. Der Delegat ermöglicht es anderen Klassen, sich für Ereignisbenachrichtigungen zu registrieren, indem sie eine Handlermethode angeben. Wenn das Ereignis auftritt, ruft der Delegate die gebundene Methode auf. Weitere Informationen darüber, wie Delegierte definiert werden, finden Sie unter Ereignisse.

Delegaten können an eine einzelne Methode oder an mehrere Methoden gebunden werden, was als Multicasting bezeichnet wird. Beim Erstellen eines Delegaten für ein Ereignis erstellen Sie (oder das System Windows) normalerweise ein Ereignis mit mehreren Empfängern. Eine seltene Ausnahme kann ein Ereignis sein, das zu einer bestimmten Prozedur (z. B. Anzeigen eines Dialogfelds) führt, die nicht mehrfach während eines Ereignisses wiederholt wird. Informationen zum Erstellen eines Multicastdelegats finden Sie unter Kombinieren von Delegaten (Multicastdelegaten).

Ein Multicastdelegat verwaltet eine Aufrufliste der Methoden, an die er gebunden ist. Der Multicastdelegat unterstützt eine Combine Methode, um eine Methode zur Aufrufliste hinzuzufügen, und eine Remove Methode, um sie zu entfernen.

Wenn ein Ereignis von der Anwendung protokolliert wird, löst das Steuerelement das Ereignis aus, indem es den Delegaten für dieses Ereignis aufruft. Der Delegat ruft wiederum die gebundene Methode auf. Im häufigsten Fall (ein Multicast-Delegat) ruft der Delegat nacheinander jede gebundene Methode in der Aufrufliste auf, was eine eins-zu-viele-Benachrichtigung ermöglicht. Diese Strategie bedeutet, dass das Steuerelement keine Liste von Zielobjekten für die Ereignisbenachrichtigung verwalten muss – der Delegierte übernimmt alle Registrierungen und Benachrichtigungen.

Delegates ermöglichen außerdem, dass mehrere Ereignisse an dieselbe Methode gebunden werden, sodass eine viele-zu-eins Benachrichtigung möglich ist. Beispielsweise kann ein Schaltflächenklickereignis und ein Menübefehl-Click-Ereignis denselben Delegat aufrufen, der dann eine einzelne Methode aufruft, um diese separaten Ereignisse auf die gleiche Weise zu behandeln.

Der Bindungsmechanismus, der für Delegaten verwendet wird, ist dynamisch: Ein Delegat kann zur Laufzeit an jede Methode gebunden werden, deren Signatur mit der des Ereignishandlers übereinstimmt. Mit diesem Feature können Sie die gebundene Methode je nach Bedingung einrichten oder ändern und einen Ereignishandler dynamisch an ein Steuerelement anfügen.

Siehe auch