TabIndex=Index ? Question par rapport au RemoveAt

[Résolu]
Signaler
Messages postés
158
Date d'inscription
samedi 22 juin 2002
Statut
Membre
Dernière intervention
27 juin 2015
-
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
-
Bonjour.
Suite de mes pbs à la chaine :)

Par rapport à ma dernière question d'hier...
J'ai réussi à générer de manière automatique mes boutons... Ok. Maintenant, j'aimerais bien les retirer un par un pour pouvoir en afficher des nouveaux.

J'ai regardé du coté de l'évenement
This.Controls.Remove()
le souci est que je ne vois pas quoi mettre dans les parenthèses... Il faut mettre un System.Control. SOIT. Mais lorsque je cast le nom de mon control que je veux retirer en System.Control il me marque que le cast est invalide...


Controls.Remove((Control)((
object)(arrayNoReponses[i])));

(oui j'ai mes Names sont stockées dans un tableau de int...)

J'ai regardé également du coté du RemoveAt() qui cette fois ci prend un int en entrée, équivalent à l'index de l'élément.
Mais je ne vois nulle part ou obtenir cet index... (j'imagine que Index est différent de TabIndex ???)

Quelqu'un pourrait il éclairer ma lanterne ?
Coq peut être ? ^^

****************************************************
Il n'y a pas de pb sans solutions : il faut juste trouver le temps pour les chercher

4 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
euh... je ne comprends pas pourquoi tu stockes le nom de ton controle dans un tableau, lorsqu'il suffit de stocker le controle lui-même dans une ArrayList...

c'est quand même beaucoup plus simple.

Sébastien FERRAND
[MVP C#]
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
64
Hello,

Mets tes controls dans une Hashtable, ou un Dictionnary si tu es en .Net 2.0.

Un exemple :

// Dans la classe
Dictionnary ControlsDict = new Dictionnary

//Dans la méthode ou tu ajoute les boutons
ControlsDict[i]=YourNewControl;

//Dans la méthode ou tu ôtes les contrôles
Controls.Remove(ControlsDict[i]);
ControlsDict.Remove(i);

Amicalement, SharpMao
Messages postés
158
Date d'inscription
samedi 22 juin 2002
Statut
Membre
Dernière intervention
27 juin 2015
1
Merci à toi sebmafate et également à toi SharpMao.

J'ai préféré utiliser la solution de sebmafate, car le pb était réglé avant ta solution SharpMao :)

Enfin pour répondre àt a question, pourquoi je n'ai pas utilisé ArrayList, tout simplement car je n'en connaissais pas l'existence...

:) ça marche très bien maintenant, pour ceux que ça intéresse ça donne ça :
Dans mon événement CreateRadio (qui crée donc un RadioButton) je stocke dans MyArrayList mon control


MyArrayList.Add(rbn);

Puis qd je souhaite l'effacer, j'appelle le code suivant :



foreach(Control MyControl
in MyArrayList)


{Controls.Remove(MyControl);}

:)

Voilà, encore merci pour l'astuce...

****************************************************
Il n'y a pas de pb sans solutions : il faut juste trouver le temps pour les chercher
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
64
Pas de problèmes, et puis de toute façon, la solution de sebmafate est meilleure, car tu enlèves tout tes controles en même temps.

Amicalement, SharpMao