C# - delegates & events
Geplaatst: wo 22 jul 2009, 15:09
Weet iemand meer over dit onderwerp?
Code: Selecteer alles
btnKnop.Click += new EventHandler(this.X);
Code: Selecteer alles
E(<lijst met parameters voor de methodeoproepen>);
Code: Selecteer alles
public event <gelinkte handler> <naam van de event>;
Code: Selecteer alles
public event EventHandler Click;
Code: Selecteer alles
public delegate void EenDelegate(string naam);
Code: Selecteer alles
public event EenDelegate Ev;
Code: Selecteer alles
Ev("Hello World!");//bij wijze van voorbeeld uiteraard
Dit is niet correct. In .Net worden events vrijwel altijd als volgt gedefinieerd:(Button.Click) Click is een standaard event, en is gelinkt met de EventHandler-delegate, een delegate zonder argumenten.
Code: Selecteer alles
public delegate void XYZEventHandler(object sender, XYZEventArgs e);
Code: Selecteer alles
public delegate void EventHandler(object sender, EventArgs e);
Code: Selecteer alles
public void btnKnop_Click(object sender, EventArgs e)
{ /* Doe iets. */ }
Code: Selecteer alles
public delegate void PingEventHandler(object sender, PingEventArgs e);
public class Pinger
{
public event Ping;
protected virtual void OnPing(PingEventArgs e)
{
if (Ping != null)
Ping(this, e);
}
public void PingMijEens(int getal)
{
OnPing(new PingEventArgs(getal));
}
}
mijn excuses dat was inderdaad een foutje van mij, enfin maar het was niet de bedoeling een opsomming van alle eventhandlers te geven, maar dus een algemeen beeld te geven wat events zijn en wat je ermee kunt doen, daar de TS zijn vraag niet verduidelijkte.virtlink schreef:Dit is niet correct. In .Net worden events vrijwel altijd als volgt gedefinieerd:
Oftewel, die hebben allemaal twee argumenten, en niet nul. De standaard EventHander heeft de volgende definitie:Code: Selecteer alles
public delegate void XYZEventHandler(object sender, XYZEventArgs e);
Code: Selecteer alles
public delegate void EventHandler(object sender, EventArgs e);
Vreemd, ik zocht op: Delegate class,about Delegate classAries schreef:Een delegate is GEEN klasse !!!
het is een soort opgepimpte function pointer zoals je die in C++ ook gebruikt