Ton probleme c'est "des fois ca ajoute une ligne, des fois 2, des fois 4" c'est ca?
De ce que tu nous montre, ca ne devrait le faire qu'une fois MAIS !
Tout dépend de où tu place :
panel_article.Controls[t - k].Click += new EventHandler(article_Click);
Si tu le place dans le constructeur de ta form, alors pas de probleme.
Mais si tu le place dans un block de code qui sera executé plusieurs fois, alors le probleme se posera.
Met un point d'arret sur cette ligne, elle ne doit s'executer qu'une fois.
Sinon, facon degueulasse, tu fais ca pour t'assurer que tu ne sera abonné qu'une seul fois à l'evenement Click :
tu déclare une nouvelle variable dans ta form :
1 2
|
EventHandler callbackClickArticle = null; |
puis à la fin de constructeur tu ajoute:
callbackClickArticle = new EventHandler(article_Click);
Enfin, ta fameuse ligne d'abonnement, tu la fait précéder d'un désabonnement (ca ne plantera pas) comme ceci :
1 2 3
|
panel_article.Controls[t - k].Click -= callbackClickArticle ;
panel_article.Controls[t - k].Click += callbackClickArticle ; |
Si devant chaque ligne d'abonnement (+=) tu fais un désabonnement (-=) ca t'evitera les abonnements doublons.
Partager