Lister tous les textbox d'une form

Résolu
babe59 Messages postés 189 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 27 novembre 2015 - 23 déc. 2006 à 16:37
babe59 Messages postés 189 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 27 novembre 2015 - 26 déc. 2006 à 15:25
Bonjour,

J'aimerai pouvoir lister tous les textbox d'une form pour les modifier dynamiquement (jusque là c'est ok) sachant que certains textbox se trouve dans des panels ou des tableLayoutPanel (là ca ne va plus...). 
lorsque j'utilise l'instruction "foreach (Control c inthis.Controls)"  je
constate que je ne traite que les contrôles directement sur la form (ce qui après réflexion me semble normal)...
Y a t il un moyen simple de lister toutes mes textbox (même ceux non directement sur la form). Je n'ai pas très envie de faire des boucles foreach sur chaque "conteneur" et je ne suis pas assez bon pour faire une petite méthode récursive... 

8 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
23 déc. 2006 à 16:54
3
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
26 déc. 2006 à 15:18
Tu peux utiliser l'opérateur typeof.

En partant du principe que tu utilises le contrôle TextBox standard :
tabc = FindAllControlForOneType(this, typeof(TextBox), tabc);

/*
coq
MVP Visual C#
CoqBlog
*/
3
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
23 déc. 2006 à 16:50
Salut,

Pas d'autre moyen que de parcourir l'ensemble des contrôles consteneurs du formulaire.
Pour ce qui est de la petite méthode qui va bien, on l'a donner plusieurs fois sur le forum, tu devrais la retrouver rapidement (elle se nommait peut être FindControl il me semble)

/*
coq
MVP Visual C#
CoqBlog
*/
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
23 déc. 2006 à 21:25
Salut, il faudra tout de même la modifier un peu car ma fonction cherche un contrôle par son nom et toi tu veux lister les contrôles par leur type.

if ( ctrl is TextBox )
   // Add...

Coq, j'en profite pour répondre à ton MP, ma fonction est obsolète depuis .NET 2.0 :

this.Control.ControlCollection.Find( key, searchAllChildren );
0

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

Posez votre question
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
23 déc. 2006 à 22:58
Chouette, je savais bien que j'avais oublier un ajout mais j'ai vérifier sur Control, pas sur ControlCollection -_-

/*
coq
MVP Visual C#
CoqBlog
*/
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
23 déc. 2006 à 23:00
D'ailleurs si j'en crois la coloration syntaxique du premier post, babe59 pourra directement se servir de celle là :p

/*
coq
MVP Visual C#
CoqBlog
*/
0
babe59 Messages postés 189 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 27 novembre 2015
26 déc. 2006 à 14:06
Si j'ai bien compris, le ControlCollection.Find ne correspond pas à ma demande (je ne fais pas une recherche par nom mais par type...).
Par contre le lien que tu m'a donné correspond très bien à ce que je veux faire (moyennant un toute petite adaptation).
J'ai toutefois encore une petite chose qui m'embête. Voici tout d'abord le source :

Appel ----------------
ArrayList tabc = newArrayList();
tabc = FindAllControlForOneType(this, textBox1.GetType(), tabc);
foreach (Control c in tabc)
...

Méthode -----------------------------
publicArrayList FindAllControlForOneType(Control parent, Type type, ArrayList tabCtrl)
{
   foreach (Control child in parent.Controls)
   {
      if (child.GetType() == type)
         tabCtrl.Add(child);
      else
         tabCtrl = FindAllControlForOneType(child, type, tabCtrl);
   }
   return tabCtrl;
}

Question ---------------------
Lors de l'appel ne n'arrive pas à passer directement le type que je veux tester (dans l'exemple, je veux retrouver toutes les textbox et passe donc une textBox au hasard pour récupérer son type)...
Au passage n'hésitez pas à critiquer le source si nécessaire
Merci
DT
0
babe59 Messages postés 189 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 27 novembre 2015
26 déc. 2006 à 15:25
Merci  !

DT
0
Rejoignez-nous