Die Standardimplementation von Events wird hier nicht behandelt.
Das neue Generic EventHandler<T>
Bei den meisten Events handelt es sich um standardmässig Implementationen mit den Definitionnen einer delegate als EventHandler, einem Event und den EvengArgs (oder einer Ableitung davon). Hier bietet bereits C# 2.0 eine Vereinfachung durch das Generic delegate EventHandler<TEventArgs>. Der zu definierende EventHandler kann mit dieser generischen delegate ersetzt werden. Nun wird die Definition eines Events einfacher und theoretisch auf einer einzigen Zeile möglich.
Beispiel:
public class PropertyChangedEventArgs : EventArgs { }
public event EventHandler<PropertyChangedEventArgs> PropertyChanged;
Events registrieren
Früher musste man die Events mit komplettem Syntax registrieren:
this.MyLinkControl.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.MyLinkControl_LinkClicked);
Hier die Kurzform:
this.MyLinkControl.EnterPress += this.MyLinkControl_EnterPress;
Die Event Accessors
Das ist ein wirklich cooles Feature. Standardmässig werden die Accessoren implizit vom Kompiler bei der Defintion erzeugt.
public event EventHandler PropertyChanged;
Möchte man nun die Accessoren selber manipulieren können, muss man den automatisch erzeugten Code vom Kompiler einfach selber schreiben.
Beispiel:
private EventHandler _propertyChanged;
public event EventHandler PropertyChanged
{
add { _propertyChanged += value; }
remove { _propertyChanged -= value; }
}
Nun ist es problemlos möglich noch Aktionen durchzuführen, bevor ein Event angehängt resp. wieder entfernt wird.