Passer d'un textbox a un autre dans une boucle

Résolu
pkmnlio Messages postés 28 Date d'inscription lundi 24 octobre 2005 Statut Membre Dernière intervention 30 décembre 2007 - 8 déc. 2007 à 11:56
vb95 Messages postés 3362 Date d'inscription samedi 11 janvier 2014 Statut Non membre Dernière intervention 7 décembre 2022 - 22 juil. 2021 à 21:24
Bonjour,

J'ai sur mon winforms, 5 textbox nommé respectivement tb1 ,tb2, tb3, tb4 et tb5
J'aimerai pouvoir les utiliser dans ma boucle for.
Pour pouvoir recuperer le texte contenu dedans.

j'ai essayer avec une variable string tb = "tb"+i;
mais cela n'est pas reconnu apres avec le .Text

Comment puis-je faire ?

Merci d'avance

15 réponses

Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 10
8 déc. 2007 à 12:47
C'est ce que je précisais dans mon deuxieme message...

Pour faire proprement, remplace "TextBox textBox = this.Controls[key];" par :

Control control = this.Controls[key];
if(control != null and control is TextBox)
{
    TextBox textBox = control as TextBox;
}


Working as designed
www.nikoui.fr
3
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 10
8 déc. 2007 à 13:08
Si jamais tes TextBox sont ajoutés dans un autre control (un panel par exemple) alors remplace "this.Controls" par "leControlContainer.Controls"


Working as designed
www.nikoui.fr
3
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 60
8 déc. 2007 à 12:08
Salut,
Tu peux faire une boucle foreach comme ceci:

foreach(Control c in this.Controls)
{
   TextBox tb = c as TextBox;
   if(tb != null)
   {
       string x = tb.Text;
   }
}

<hr />
-My Blog-
0
pkmnlio Messages postés 28 Date d'inscription lundi 24 octobre 2005 Statut Membre Dernière intervention 30 décembre 2007
8 déc. 2007 à 12:24
Le probleme est que je dois encore rajouter d'autre textbox qui eux ne devront pas etre pris en compte.

J'ai teste cette methode et apparement, il ne le fait qu'une fois sans passer par aucun textbox.
Il semble qu'il ne les reconnait pas.

Il me faudrait un moyen de faire utiliser "tb"+i comme nom du textbox pour pouvoir utiliser le .Text

J'avais deja reussi par le passe avec un picturebox mais je n'ai plus le programme concerne
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 10
8 déc. 2007 à 12:30
Tu peux faire comme cela :

            for (int i = 1; i < 6; i++)
            {
                string key = string.Format("tb{0}", i);
                TextBox textBox = this.Controls[key];
            }


Working as designed
www.nikoui.fr
0
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 10
8 déc. 2007 à 12:39
Petite erreur dans mon message précédent : il faut caster "this.Controls[key]" en TextBox (après avoir vérifié qu'il n'est pas nul évidement ;)


Working as designed
www.nikoui.fr
0
pkmnlio Messages postés 28 Date d'inscription lundi 24 octobre 2005 Statut Membre Dernière intervention 30 décembre 2007
8 déc. 2007 à 12:44
Cela me semble bien mais au moment de la compilation, j'ai une erreur.
Impossible de convertir implicitement System.windows.controls en system.forms.textbox. une conversion explicite existe (un casest-il manquant ?)

Le probleme est que je ne sais pas trop comment on converti explicitemnt en textbox.
0
pkmnlio Messages postés 28 Date d'inscription lundi 24 octobre 2005 Statut Membre Dernière intervention 30 décembre 2007
8 déc. 2007 à 12:52
Je viens de faire la modification, et apparement, la variable control reste à null.
0
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 10
8 déc. 2007 à 12:58
Comment as tu ajouté tes text box dans ta form ? par le designer ou "par code" ?
Executes tu le bout de code en question dans ta form ? ou ailleur ?
Tes TextBox s'apellent bien "tb1", "tb2", etc (propriété Name du TextBox) ?


Working as designed
www.nikoui.fr
0
pkmnlio Messages postés 28 Date d'inscription lundi 24 octobre 2005 Statut Membre Dernière intervention 30 décembre 2007
8 déc. 2007 à 13:02
J'ai rajouter les textbox par le designer.
Le code est executer directement dans le form où se trouvent les textbox.
Les textbox s'appellent tous tbdvd1, tbdvd2, etc mais j'avais modifier tb{0} par tbdvd{0}
0
pkmnlio Messages postés 28 Date d'inscription lundi 24 octobre 2005 Statut Membre Dernière intervention 30 décembre 2007
8 déc. 2007 à 13:13
Merci cela fonctionne parfaitement maintenant
0
Yoshifumi Messages postés 7 Date d'inscription mardi 4 mai 2010 Statut Membre Dernière intervention 29 septembre 2010
21 mai 2010 à 11:30
Un très grand merci pour cette solution !
0
bonsoir,
je n'ai pas réussi a réaliser cela. Quel est la partie qui a fonctionné??

je dois vider 144 textbox1 (name : TextBox1,2,3,4, etc.) ajouter par le designer.
0
vb95 Messages postés 3362 Date d'inscription samedi 11 janvier 2014 Statut Non membre Dernière intervention 7 décembre 2022 163
22 juil. 2021 à 13:02
Bonjour
Déterrer un post vieux de 10 ans n'est guère judicieux . Cela m'étonnerait que un des anciens participants te répondent . il aurait été plus simple de créer ton propre post .
Cependant je vais quand même te répondre .
Les 144 TextBox sont elles toutes dans la Form ? Il faut comprendre qu'aucune de ces Textbox ne doit être dans un contrôle conteneur ( Groupbox, Panel par exemple) .
J'attends votre réponse .
0
Whismeril Messages postés 18024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 7 décembre 2022 618
22 juil. 2021 à 17:53
Bonjour

144 textbox!!!! A mon avis y'a une erreur de conception au départ.
0
Bonjour,
Dans la frm principale. Le but est de récupérer les info de chaque txtbox1-> 144 et de le rentré dans un fichier ds un format spécifique. J'aurai pu passe par un datagrid mais je ne peut pas les disposers comme il me plaît.
Les données seront récuperé a chaque fois que la personne sélectionne sont nom. Comme des données perso, mais sans code.
Dès que je les sauve avec un stream ca prend sont petit temps....

Merci
0
vb95 Messages postés 3362 Date d'inscription samedi 11 janvier 2014 Statut Non membre Dernière intervention 7 décembre 2022 163 > Philmag79
Modifié le 22 juil. 2021 à 21:26
Bonsoir
Et pour chaque personne cela demande d'avoir 144 TextBox pour elle toute seule ?
Les 144 Textbox sont elles toutes toujours affichées sur la Form ?
0
vb95 Messages postés 3362 Date d'inscription samedi 11 janvier 2014 Statut Non membre Dernière intervention 7 décembre 2022 163
22 juil. 2021 à 18:02
Très bonne remarque Whis !
Salut à toi
0