Créer un control dans une boucle [Résolu]

Signaler
Messages postés
54
Date d'inscription
mercredi 14 juin 2006
Statut
Membre
Dernière intervention
29 août 2006
-
Messages postés
4
Date d'inscription
mercredi 16 décembre 2009
Statut
Membre
Dernière intervention
6 janvier 2012
-
salut tout le monde,
je voudrai savoir comment faire pour créer, par exple un texBox dans une boucle for ou while.
Mon probleme est que je n'arrive pas donner un nouveau nom.Je travaille avec un compteur qui a chaque fois qu' il parcours ma boucle il augmente de 1.J'ai essayé ceux ci:
int

i = 10;

while (rdr.Read()){

TextBox textBox+i+=
new
TextBox();

i++;

}
ça ne marche est ce que quelqu'un aurait deja rencontré ce type de probleme.
merci d'avance pour vos reponses.

Maité

9 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
tu ne peux pas faire ceci...

par contre, tu peux mettre tes textbox dans une collection :

private List<TextBox> mesTextBoxes = new List<TextBox>();

int i = 10;
whilte (rdr.Read()) {
    TextBox tb = new TextBox();
    tb.Name = string.Concat("textBox", i);
    mesTextBoxes.Add(tb);

    i++;
}

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
49
Mais c'est normal, le code qu'il t'a donné insére des texteBox dans une collection (pas sur un formulaire!).
Donc maintenant, tu peux itérer dans ta collection pour les afficher (toutes ou certaines).
Faudra juste setter la location, et pas oublier de les ajouter dans leur containers...

<hr size="2" />VC# forever
Messages postés
475
Date d'inscription
jeudi 19 juin 2003
Statut
Membre
Dernière intervention
3 novembre 2008

C'est une erreur mignone je trouve. Je me rappelle l'avoir deja fait

[:D] @++
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
49
Lol, qui n'a jamais essayé de vouloir construire dynamiquement le nom d'une variable
On a tous du passer une fois par là ou l'autre... ma fois, c'est pas possible en C# (ou peut-être avec Reflexion?)

<hr size="2" />VC# forever
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
c'est possible ;)

mais il faut utiliser les mécanismes de compilations dynamiques

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
54
Date d'inscription
mercredi 14 juin 2006
Statut
Membre
Dernière intervention
29 août 2006

Merci sebmafate
 j'ai essayé ta proposition apparemment ça marche mais mes text box ne s'affiche pas.J'ai essayé de mette tb.visible=true mais rien ne s'affiche sur ma fenetre?
merci d'avanxce pour vons reponses
Messages postés
54
Date d'inscription
mercredi 14 juin 2006
Statut
Membre
Dernière intervention
29 août 2006

pourtant j'ai ajouté les textBox dans un conteneur.Mon conteneur est ici groupBox1



while



(rdr.Read()){


TextBox
tb =

new



TextBox
();tb.Name =


string
.Concat(

"textBox"
, i);tb.Text = rdr.GetString(0);



tb.Location =




new
System.Drawing.

Point
(10, 40 * i);tb.Multiline =


true
;tb.Size =


new
System.Drawing.

Size
(618, 26);tb.Enabled =


false
;tb.Visible =


true
;mesTextBoxes.Add(tb);


this
.groupBox1.Controls.Add(tb);i++;

}


//fin while






Maité
Messages postés
54
Date d'inscription
mercredi 14 juin 2006
Statut
Membre
Dernière intervention
29 août 2006

je vois ou se trouve mon erreur mon i est trop grand donc normal que ça n'apparaisse pas dans mon groupBox.


mille merci pour vos reponses

Maité
Messages postés
4
Date d'inscription
mercredi 16 décembre 2009
Statut
Membre
Dernière intervention
6 janvier 2012

OK on est en 2011, je vois que ça a pas trop bougé, mais, c'est clair, c'est net, c'est bien. Merci à ceux qui ont répondu...

Le tout c'est de gérer la location de tout ça....