Bonjour,
Jusqu'à présent, j'ai utilisé les événements sans rencontrer de problèmes particuliers.
Par exemple, si dans une classe dérivant de "Control" j'ai besoin d'un nouvel événement, je déclare simplement l'événement et je crée une méthode d'appel (pour un EventHandler de base et un EventArgs classique, sinon évidemment je dérive EventArgs et je crée mon propre délégué) :
Ca semble ne poser aucun problème, c'est comme ça que j'avais compris la chose dès le début.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public event EventHandler ValuePropChanged; protected virtual void OnValuePropChanged(EventArgs e) { if (ValuePropChanged != null) ValuePropChanged(this, e); }
Or, voici qu'en cherchant autre chose, je tombe sur ceci dans un contrôle du framework, dérivé aussi de "Control" :
Donc, ajout explicite des méthodes Add et Remove et appel de AddHandler et RemoveHandler de la classe de base.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public event EventHandler ValueChanged { add { base.Events.AddHandler(EVENT_VALUECHANGED, value); } remove { base.Events.RemoveHandler(EVENT_VALUECHANGED, value); } }
Du coup, j'ai l'impression d'avoir raté quelque chose.
Quelle est la différence de fonctionnement entre ma méthode et la méthode "officielle", et surtout si ces appels sont nécessaires, pourquoi mon code fonctionne-t-il?
J'ai désassemblé mon propre code pour voir si le compilateur n'avait pas ajouté du code implicite, mais non, rien du tout.
Merci d'avance,
Claude
Partager