Behandeln von Ereignissen

Um ein Ereignis in einer Anwendung zu verarbeiten, müssen Sie einen Ereignishandler (eine Methode für die Ereignisbehandlung) bereitstellen, der als Reaktion auf das Ereignis Programmlogik ausführt, und den Ereignishandler bei der Ereignisquelle registrieren. Dieser Prozess wird als Ereignisverknüpfung bezeichnet. In den visuellen Designern für Windows Forms und Web Forms sind RAD-Tools (Rapid Application Development) verfügbar, die die Details der Ereignisverknüpfung vereinfachen bzw. vor dem Benutzer verbergen.

In diesem Thema wird das allgemeine Muster zur Behandlung von Ereignissen beschrieben. Eine Übersicht über das Ereignismodell in .NET Framework finden Sie unter Ereignisse und Delegaten. Weitere Informationen über das Ereignismodell in Windows Forms finden Sie unter Gewusst wie: Verarbeiten von Ereignissen in einer Windows Forms-Anwendung. Weitere Informationen über das Ereignismodell in Web Forms finden Sie unter Gewusst wie: Verarbeiten von Ereignissen in einer Web Forms-Anwendung.

Das Ereignismuster

Die Details der Ereignisverknüpfung unterscheiden sich in Windows Forms und in Web Forms, da durch verschiedene RAD-Tools unterschiedliche Supportebenen bereitgestellt werden. Beide Szenarien folgen aber demselben Ereignismuster, das die folgenden Merkmale aufweist:

  • Eine Klasse, die ein Ereignis mit dem Namen EventName auslöst, hat den folgenden Member:

    public event EventNameEventHandler EventName;
    
    Public Event EventName As EventNameEventHandler
    
  • Der Ereignisdelegat für das EventName-Ereignis ist EventNameEventHandler mit der folgenden Signatur:

    public delegate void EventNameEventHandler(object sender, EventNameEventArgs e);
    
    Public Delegate Sub EventNameEventHandler(sender As Object, e As EventNameEventArgs)
    

Um das EventName-Ereignis zu verarbeiten, muss der Ereignishandler die gleiche Signatur wie der Ereignisdelegat haben:

void EventHandler(object sender, EventNameEventArgs e) {}
Sub EventHandler(sender As Object, e As EventNameEventArgs)

Hinweis

In .NET Framework hat ein Ereignisdelegat die Bezeichnung EventNameEventHandler, während sich der Begriff Ereignishandler in der Dokumentation auf eine Methode für die Ereignisbehandlung bezieht. Der Grund für dieses Benennungsschema liegt darin, dass ein EventNameEventHandler-Delegat auf den Ereignishandler (die Methode) verweist, der das Ereignis behandelt.

Wenn ein Ereignis keine zugeordneten Daten besitzt, verwendet die Klasse, die das Ereignis auslöst, System.EventHandler als Delegat und System.EventArgs für die Ereignisdaten. Ereignisse, denen Daten zugeordnet sind, verwenden Klassen, die von EventArgs für den Ereignisdatentyp abgeleitet sind, und den zugeordneten Ereignisdelegattyp. Wenn Sie z. B. ein MouseUp-Ereignis in einer Windows Forms-Anwendung behandeln möchten, lautet die Ereignisdatenklasse MouseEventArgs, und der Ereignisdelegat ist MouseEventHandler. Beachten Sie, dass verschiedene Mausereignisse eine allgemeine Klasse für Ereignisdaten und einen allgemeinen Ereignisdelegaten verwenden, sodass das Benennungsschema nicht genau mit der oben beschriebenen Konvention übereinstimmt. Für die Mausereignisse muss der Ereignishandler über die folgende Signatur verfügen:

void Mouse_Moved(object sender, MouseEventArgs e){}
Sub Mouse_Moved(sender As Object, e As MouseEventArgs)

Die Parameter für den Absender und das Ereignisargument übergeben zusätzliche Details über das Mausereignis an den Ereignishandler. Das sender-Objekt gibt an, was das Ereignis ausgelöst hat. Der MouseEventArgs-Parameter stellt Details über die Mausbewegung bereit, die das Ereignis ausgelöst hat. Viele Ereignisquellen stellen zusätzliche Daten für das Ereignis bereit, und viele Ereignishandler verwenden ereignisspezifische Daten bei der Verarbeitung des Ereignisses. Ein Beispiel, das das Auslösen und Behandeln von Ereignissen mit ereignisspezifischen Daten veranschaulicht, finden Sie unter Gewusst wie: Auslösen und Behandeln von Ereignissen.

Hinweis

Ereignisse werden auch außerhalb des Kontexts von Benutzeroberflächen (UI - User Interfaces) ausgelöst, und .NET Framework enthält viele nicht UI-bezogene Klassen, die Ereignisse auslösen. Alle Ereignisse folgen jedoch dem hier beschriebenen Muster.

Informationen über das Auslösen von Ereignissen aus einer Klasse finden Sie unter Auslösen eines Ereignisses.

Siehe auch

Aufgaben

Gewusst wie: Verarbeiten von Ereignissen in einer Web Forms-Anwendung
Gewusst wie: Verarbeiten von Ereignissen in einer Windows Forms-Anwendung

Konzepte

Ereignisse und Delegaten
Auslösen eines Ereignisses

Weitere Ressourcen

Behandeln und Auslösen von Ereignissen