Lister tous les textbox d'une form [Résolu]

Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Dernière intervention
27 novembre 2015
- 23 déc. 2006 à 16:37 - Dernière réponse :
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
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... 
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
23 déc. 2006 à 16:54
3
Merci

Merci cs_coq 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_coq
Meilleure réponse
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
26 déc. 2006 à 15:18
3
Merci
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
*/

Merci cs_coq 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_coq
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
23 déc. 2006 à 16:50
0
Merci
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
*/
Commenter la réponse de cs_coq
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
23 déc. 2006 à 21:25
0
Merci
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 );
Commenter la réponse de Lutinore
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
23 déc. 2006 à 22:58
0
Merci
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
*/
Commenter la réponse de cs_coq
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
23 déc. 2006 à 23:00
0
Merci
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
*/
Commenter la réponse de cs_coq
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Dernière intervention
27 novembre 2015
26 déc. 2006 à 14:06
0
Merci
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
Commenter la réponse de babe59
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Dernière intervention
27 novembre 2015
26 déc. 2006 à 15:25
0
Merci
Merci  !

DT
Commenter la réponse de babe59

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.