
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.
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 TypEventArgs
, das zusätzliche Informationen über das Ereignis enthält. Meistens wir eine eigene Klasse vonEventArgs
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.
- Wir erstellen ein Objekt unserer
ClickEventArgs
Klasse, legen dieMessage
fest und übergeben das Objekt an das Event - Unsere Event-Methode
Notify
soll nun einClickEventArgs
Objekt entgegen nehmen und die übergebeneMessage
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.