Ereignisgesteuertes .NET:wie Ereignisse funktionieren

 C Programming >> C-Programmierung >  >> Tags >> .NET
Ereignisgesteuertes .NET:wie Ereignisse funktionieren

Die eigentliche Grundlage der ereignisgesteuerten Programmierung ist das Konzept der Ereignisse. Ereignisse sind eine Implementierung des Beobachtermusters. Mit dem Beobachtermuster haben Sie eine beobachtbare Entität und Entitäten, die diese Entität beobachten möchten.

Objekte mit Ereignissen sind beobachtbar, und andere Objekte abonnieren diese Ereignisse und werden benachrichtigt, wenn die Ereignisse eintreten.

Der beste Weg, dies zu verstehen, ist ein Blick auf die Benutzeroberfläche. In der Benutzeroberfläche haben wir Steuerelemente, und jedem Steuerelement sind Ereignisse zugeordnet. Wir können auf diese Ereignisse reagieren, indem wir Event-Handler hinzufügen, die auf die Ereignisse lauschen.

Hier haben wir ein einfaches Formular mit einem Senden-Button. Wenn ich auf die Schaltfläche klicke, wird ein Label aktualisiert, das besagt, dass die Nachricht gesendet wurde. Wie passiert das?

1 – Das System erkennt einen Klick auf die Schaltfläche und führt button.OnClick()

aus

Die Button-Klasse implementiert eine Methode namens OnClick(). Wenn das System einen Klick erkennt, ruft es OnClick() auf.

Ereignisse können nur von der Klasse aufgerufen werden, die sie enthält. Deshalb muss das System OnClick() aufrufen. Der nächste Schritt ruft das Ereignis tatsächlich auf.

2 – OnClick() ruft das Click-Ereignis auf

Die Button-Klasse erbt die Control-Klasse, die ein Click-Ereignis hat.

public event EventHandler Click
Code language: C# (cs)

OnClick() ruft das Click-Ereignis auf:

if(Click != null)
{
   Click(this, e);
}
Code language: C# (cs)

Hinweis:Ich habe dies ein wenig vereinfacht, aber Sie können den eigentlichen .NET-Quellcode hier sehen.

3 – Der Handler btnSubmit_Click wird aufgerufen

In dem Formular habe ich das Click-Event abonniert:

this.btnSubmit.Click += new System.EventHandler(this.btnSubmit_Click);
Code language: C# (cs)

Wenn das Click-Ereignis aufgerufen wird, ruft es alle Methoden auf, die es abonniert haben. Da btnSubmit_Click es abonniert hat, wird es aufgerufen.

private void btnSubmit_Click(object sender, EventArgs e)
{
	lblStatus.Text = $"Message sent at {DateTime.Now}";
}
Code language: C# (cs)

Am Ende führt dies dazu, dass der Text des Labels aktualisiert wird: