Salve,
fino ad ora, se volevo creare un evento, mi facevo il delegato sul modello di un metodo, e quindi creavo l'evento. Cioè, se mi serviva un evento che chiamasse un metodo Method1 che accettasse due int e che restituisse un bool, facevo:

codice:
public delegate bool Delegato1 (int a, int b);
public event Delegato1 Evento1;
E poi aggiungevo eventualmente un metodo che prendesse 2 int e restituisse un bool all'evento Evento1 con l'operatore +=.
codice:
Evento1 += Method1;
Ho però scoperto solo ora che esiste un delegato generico (EventHandler, purchè l'evento non debba restituire un valore) e un argomento generico (EventArgs), molto utile nel caso in cui qualcuno che non conosca il codice del mio programma abbia la necessità di cambiare il metodo associato ad un dato evento.

Però non ho capito come si usa EventArgs. Mettiamo che io debba, come descritto poco sopra, passare all'evento due interi. Come faccio a passarglieli se il delegato EventHandler accetta come parametri solo un object (il sender) e un tipo EventArgs?

Spero di essere stato chiaro, perchè di solito non lo sono molto :P.

Grazie a tutti.

Ciao