Fiche mémo pour créer rapidement un événement lancé d’une classe, et abonnement à cet event.
Etapes de création d’un événement customisé complet (C#):
- 1- DANS LA CLASSE SOULEVANT L’EVENEMENT
- Delegate :
public delegate void MonHandler(object sender, MonEventArgs e);
- L’événement lui-même:
public event MonHandler On_QuelqueChoseSePassed;
- Classe « MonEventArgs » :
public class MonEventArgs : EventArgs { private int _iInformation1; private string _sInformation2; internal MFluxEventArgs(int iInfo1, string sInfo2) { _iInformation1 = iInfo1; _sInformation2 = sInfo2; } public int Information1 { get { return _iInformation1; } } public string Information2 { get { return _sInformation2; } } }
- Fonction qui lance l’événement :
private void FireQuelqueChoseSePassed(MonEventArgs e) { if (On_QuelqueChoseSePassed != ') { On_QuelqueChoseSePassed(this, e); } }
- Maintenant, dans mon code, je vais avertir quand quelque chose se passe :
...
FireQuelqueChoseSePassed(new MFluxEventArgs(15, "On est ici"));
...
- 2- AILLEURS, on souhaite s’abonner à l’événement :
- On abonne une fonction de la même signature que le delegate :
MaClasse.On_QuelqueChoseSePassed +=new MaClasse.MonHandler(LaFonctionQuiVaRecevoirLEvent);
- La fonction abonnée :
protected void LaFonctionQuiVaRecevoirLEvent(object sender, MonEventArgs e)
{
// Ici, on peut utiliser "sender" (objet MaClasse instancié), ou "e" (qui contient un entier et un string...)
}