Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Déconnecter un évènement

6 réponses
Avatar
J-L
Bonjour

Pour lier un évènement à un composant, je fais par exemple:

this.cbxLanguages.SelectedIndexChanged += new
System.EventHandler(this.cbxLanguages_SelectedIndexChanged);

Mais si je veux déconnecter cette procédure temporairement, et sachant
que plusieurs procédures peuvent être reliées à
this.cbxLanguages.SelectedIndexChanged

Comment faire ?

Si je fais
this.cbxLanguages.SelectedIndexChanged = null;
///traitement
this.cbxLanguages.SelectedIndexChanged += new
System.EventHandler(this.cbxLanguages_SelectedIndexChanged);


Avec le null, je vais éliminer toutes les autres procédures associées
non ?

6 réponses

Avatar
Gloops
Bonjour,

J'aurais tendance à proposer

... SelectedIndexChanged -= System.EventHandler(...)

mais j'ose à peine, car j'imagine que tu as dû essayer.

Si je me rappelle bien, il y a lieu de vérifier si la liste sera vide.

Ce soir je passe en coup de vent, peut-être quelqu'un aura-t-il proposé
une réponse plus étoffée d'ici mon prochain passage.
__________________________________
J-L a écrit, le 08/04/2008 16:45 :
Bonjour

Pour lier un évènement à un composant, je fais par exemple:

this.cbxLanguages.SelectedIndexChanged += new
System.EventHandler(this.cbxLanguages_SelectedIndexChanged);

Mais si je veux déconnecter cette procédure temporairement, et sach ant
que plusieurs procédures peuvent être reliées à
this.cbxLanguages.SelectedIndexChanged

Comment faire ?

Si je fais
this.cbxLanguages.SelectedIndexChanged = null;
///traitement
this.cbxLanguages.SelectedIndexChanged += new
System.EventHandler(this.cbxLanguages_SelectedIndexChanged);


Avec le null, je vais éliminer toutes les autres procédures associé es non ?




Avatar
Gilles Kohl [MVP]
On Tue, 08 Apr 2008 16:45:12 +0200, J-L wrote:

Bonjour

Pour lier un évènement à un composant, je fais par exemple:

this.cbxLanguages.SelectedIndexChanged += new
System.EventHandler(this.cbxLanguages_SelectedIndexChanged);

Mais si je veux déconnecter cette procédure temporairement, et sachant
que plusieurs procédures peuvent être reliées à
this.cbxLanguages.SelectedIndexChanged

Comment faire ?



this.cbxLanguages.SelectedIndexChanged - this.cbxLanguages_SelectedIndexChanged;

Si je fais
this.cbxLanguages.SelectedIndexChanged = null;
///traitement
this.cbxLanguages.SelectedIndexChanged += new
System.EventHandler(this.cbxLanguages_SelectedIndexChanged);


Avec le null, je vais éliminer toutes les autres procédures associées
non ?



Non, le compilateur ne l'acceptera pas - les délégats acceptent cette syntaxe,
mais les évenements, non (pour des raisons de découplage).

Amicalement,
Gilles.

Regards,
Gilles [MVP].

(Please reply to the group, not via email.
Find my MVP profile with past articles / downloads here:
http://www.gilleskohl.de/mvpprofile.htm)
Avatar
J-L
>
this.cbxLanguages.SelectedIndexChanged - > this.cbxLanguages_SelectedIndexChanged;




Merci beaucoup
Avatar
J-L
>
... SelectedIndexChanged -= System.EventHandler(...)




C'était presque ça :-) .. Merci
Avatar
Gloops
J-L a écrit, le 09/04/2008 10:38 :

... SelectedIndexChanged -= System.EventHandler(...)




C'était presque ça :-) .. Merci





Oui, presque, parce que j'ai abrégé en mettant des points de suspensi on
à la place de la partie qu'explicite Gilles, tandis que Gilles a laissé e
implicite la partie que j'ai écrite ci-dessus.

Ou je me fais mousser gratuitement, là ?

Je n'ai pas testé moi-même récemment, mais en voyant Gilles dire pa reil,
je pars confiant :)
Avatar
Gilles Kohl [MVP]
On Thu, 10 Apr 2008 00:07:38 +0200, Gloops wrote:

J-L a écrit, le 09/04/2008 10:38 :

... SelectedIndexChanged -= System.EventHandler(...)




C'était presque ça :-) .. Merci





Oui, presque, parce que j'ai abrégé en mettant des points de suspension
à la place de la partie qu'explicite Gilles, tandis que Gilles a laissée
implicite la partie que j'ai écrite ci-dessus.



Cette partie (l'appel du constructeur délegat) est en fait ajoutée automatiquement par le compilateur (depuis C# 1.1 ou 2.0, je ne me rappele plus exactement).

Amicalement,
Gilles.



Regards,
Gilles [MVP].

(Please reply to the group, not via email.
Find my MVP profile with past articles / downloads here:
http://www.gilleskohl.de/mvpprofile.htm)