Passer d'un textbox a un autre dans une boucle

[Résolu]
Signaler
Messages postés
28
Date d'inscription
lundi 24 octobre 2005
Statut
Membre
Dernière intervention
30 décembre 2007
-
Messages postés
2473
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
22 septembre 2021
-
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

Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
10
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
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
10
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
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
57
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-
Messages postés
28
Date d'inscription
lundi 24 octobre 2005
Statut
Membre
Dernière intervention
30 décembre 2007

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
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
10
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
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
10
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
Messages postés
28
Date d'inscription
lundi 24 octobre 2005
Statut
Membre
Dernière intervention
30 décembre 2007

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.
Messages postés
28
Date d'inscription
lundi 24 octobre 2005
Statut
Membre
Dernière intervention
30 décembre 2007

Je viens de faire la modification, et apparement, la variable control reste à null.
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
10
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
Messages postés
28
Date d'inscription
lundi 24 octobre 2005
Statut
Membre
Dernière intervention
30 décembre 2007

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}
Messages postés
28
Date d'inscription
lundi 24 octobre 2005
Statut
Membre
Dernière intervention
30 décembre 2007

Merci cela fonctionne parfaitement maintenant
Messages postés
7
Date d'inscription
mardi 4 mai 2010
Statut
Membre
Dernière intervention
29 septembre 2010

Un très grand merci pour cette solution !
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.
Messages postés
2473
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
22 septembre 2021
141
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 .
Messages postés
16297
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
23 septembre 2021
563
Bonjour

144 textbox!!!! A mon avis y'a une erreur de conception au départ.
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
Messages postés
2473
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
22 septembre 2021
141 > Philmag79
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 ?
Messages postés
2473
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
22 septembre 2021
141
Très bonne remarque Whis !
Salut à toi