C# Eventhandler einfach erklärt

C# Eventhandler

Einleitung zum C# Eventhandler

In diesem Artikel erkläre ich dir, was ein C# Eventhandler ist, wofür er verwendet wird, wieso er wichtig ist und wie du ihn selber verwenden kannst. Weiter unten im Artikel findest du natürlich auch wie immer etwas Expertenwissen, lies dir den Artikel also auf jeden Fall sorgfältig bis zum Ende durch.

Dein Wissen über C# Events kannst du gerne vorab mit dem verlinkten Artikel auffrischen.

Mit meinem kostenlosen Videokurs zu den Grundlagen von C# findest du den perfekten Einstieg in die Softwareentwicklung mit C#. Egal, ob du C# als Hobby, für die Uni oder für eine neue Karriere lernen möchtest, mit diesem Kurs lernst du C# schnell, einfach und professionell.
Mit meinem kostenlosen Videokurs zu den Grundlagen von C# findest du den perfekten Einstieg in die Softwareentwicklung mit C#.

Was ist ein C# Eventhandler?

Ein Event-Handler in C# ist ein Stück Code, das ausgeführt wird, wenn ein bestimmtes Ereignis eintritt, wie zum Beispiel ein Klick auf einen Button oder das Absenden eines Formulars. Mit einem Event-Handler kann man festlegen, welche Aktion ausgeführt werden soll, wenn dieses Ereignis eintritt.

Zum Beispiel, wenn man einen Button auf einem Formular hat und etwas passieren soll, wenn der Button geklickt wird, kann man einen Event-Handler für das Click-Ereignis des Buttons erstellen.

Der Event-Handler enthält den Code, der ausgeführt wird, wenn der Button geklickt wird, wie zum Beispiel das Öffnen eines neuen Fensters oder das Anzeigen einer Nachricht.

Einen C# Eventhandler erstellen

Man kann einen Event-Handler erstellen, indem man eine Methode als Delegat des Ereignisses festlegt. Diese Methode wird dann ausgeführt, sobald das Ereignis eintritt.

Im folgenden Beispiel haben wir eine einfache Windows Form Anwendung die einen einzigen Button und ein Textfeld besitzt.

using System;
using System.Windows.Forms;

class Form1 : Form
{
    private Button button1;

    public Form1()
    {
        button1 = new Button();
        button1.Text = "Klick mich";

        Controls.Add(button1);
    }
}

Im nächsten Schritt fügen wir dem Code einen Eventhandler inklusiv seinem auszuführenden Code zu:

using System;
using System.Windows.Forms;

class Form1 : Form
{
    private Button button1;

    public Form1()
    {
        button1 = new Button();
        button1.Text = "Klick mich";

        // Registriere Event-Handler
        button1.Click += new EventHandler(Notify);

        Controls.Add(button1);
    }
    
    // Dieser Code wird ausgeführt sobald der Button geklickt wird
    private void Notify(object sender, EventArgs e)
    {
        MessageBox.Show("Button wurde geklickt!");
    }
}

In diesem Beispiel wird also ein Button erstellt und sein “Click”-Ereignis wird mit einer Event-Handler-Methode namens “Notify” registriert. Die Event-Handler-Methode (Notify) zeigt eine Meldung “Button wurde geklickt!” an, wenn der Button vom Benutzer geklickt wird.

Zum registrieren eines C# Eventhandlers verwenden wir den += Operator

Wichtig: Ein Eventhandler ist nicht das gleiche wie ein Delegat! Ein Delegat ist ein Typ, der eine Methodensignatur definiert, und ein Event-Handler ist eine Methode, die ausgeführt wird wenn ein bestimmtes Event eintritt.

Einen Eventhandler entfernen

Mit dem += Operator kannst du also Eventhandler zu einem Event hinzufügen. Es ist also keine Überraschung, dass du einen Eventhandler mit dem -= Operator auch wieder entfernen kannst:

...

    public Form1()
    {
        ...

        // Registriere Event-Handler
        button1.Click += new EventHandler(Notify);

        // Entferne einen Event-Handler
        button1.Click -= new EventHandler(Notify);

        ...
    }
    
...

Ein Event (zum Beispiel das Click Event unseres Buttons) kann übrigens mehrere EventHandler zugewiesen bekommen.

Parameter der C# EventHandler-Methode

Werfen wir nochmal schnell einen Blick auf die Event-Handler-Methode:

private void Notify(object sender, EventArgs e)
{
   MessageBox.Show("Button wurde geklickt von " + sender);
}

In C# nimmt eine Event-Handler-Methode normalerweise zwei Parameter entgegen: ein Objekt sender und ein EventArgs e.

  • Der Parameter sender ist das Objekt, das das Event ausgelöst hat (in unserem Fall ist dass der Button)
  • Der Parameter e ist ein Objekt vom Typ EventArgs, das zusätzliche Informationen über das Ereignis enthält. Meistens wir eine eigene Klasse von EventArgs abgeleitet um spezifische Informationen zu übersenden.

Expertenwissen: Eigene EventArgs erstellen

Oftmals möchtest du bestimmte Informationen mit an das Objekt übersenden. Wir erstellen jetzt eine eigene Klasse ClickEventArgs und leite sie von der Base-Class EventArgs ab:

class ClickEventArgs: EventArgs
{
   public string Message { get; set; }
}

Im nächsten Schritt passen wir nun unser Programm an.

  1. Wir erstellen ein Objekt unserer ClickEventArgs Klasse, legen die Message fest und übergeben das Objekt an das Event
  2. Unsere Event-Methode Notify soll nun ein ClickEventArgs Objekt entgegen nehmen und die übergebene Message anzeigen
class ClickEventArgs: EventArgs
{
   public string Message { get; set; }
}

class Form1 : Form
{
    private Button button1;

    public Form1()
    {
        button1 = new Button();
        button1.Text = "Klick mich";

        // Registriere Event-Handler mit unseren Args
        ClickEventArgs args = new ClickEventsArgs();
        args.Message = "Hallo Welt";

        button1.Click += new EventHandler(Notify, args);

        Controls.Add(button1);
    }
    
    // Im Parameter verwenden wir unsere eigene Args Klasse
    private void Notify(object sender, ClickEventArgs e)
    {
        MessageBox.Show(e.Message); // Zeige unsere Message an
    }
}

So, du solltest jetzt eine klare Vorstellung davon haben, wie du C# Eventhandler erstellst und verwendest. Wenn du noch wissen möchtest, dann schau dir mal diese Dokumentation an.

✅ Lerne alle Grundlagen der C# Programmierung ✅ Der ideale Einstieg in die Softwareentwicklung ✅ 30+ HD Videolektionen ✅ Komplett kostenlos ✅ Sofortiger Zugriff
Der C# Grundlagenkurs
Kostenlos
Overlay Image
Der C# Grundlagenkurs
Kostenlos
✅ Alle Grundlagen der C# Programmierung ✅ Der ideale Einstieg in die Entwicklung ✅ 30+ HD Videolektionen ✅ Komplett kostenlos ✅ Sofortiger Zugriff
Overlay Image