Liste de comboBox [Résolu]

redam2005 22 Messages postés mercredi 18 mai 2005Date d'inscription 1 août 2005 Dernière intervention - 28 juin 2005 à 15:26 - Dernière réponse : redam2005 22 Messages postés mercredi 18 mai 2005Date d'inscription 1 août 2005 Dernière intervention
- 30 juin 2005 à 09:12
bonjour,

Voilà j'ai une liste de comboBox que j'aimerai remplir en boucle ainsi :

for (i=0;i<20;i++)
{
string nomCombo = "comboBox" + i;
while (Form1.Catalog[j]!=null)
{
nomCombo.Items.Add(Form1.Catalog[j]);
j++;
}
}

Evidemment "nomCombo.Items.Add(Form1.Catalog[j]);" ça ne fonctionne pas.
Connaissez-vous un moyen de transformer un string en nom de control ?

Merci

Redam
Afficher la suite 

14 réponses

Répondre au sujet
cs_RMI 305 Messages postés vendredi 18 juillet 2003Date d'inscription 2 août 2010 Dernière intervention - 29 juin 2005 à 14:35
+3
Utile
Tu dois indiquer que tes bouton appartiennent à ta form

Rajoute

this.Controls.AddRange(comboBoxs);

aprés ta boucle de création

Théo
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_RMI
cs_RMI 305 Messages postés vendredi 18 juillet 2003Date d'inscription 2 août 2010 Dernière intervention - 30 juin 2005 à 08:41
+3
Utile
bien sur tu peux acceder à n'importe quelle propriete MaProprieté en faisant



comboBoxs[i].MaProprieté



ou créer un evt MonEvt

comboBoxs[i].MonEvt += new System.EventHandler(MaFonctionDelegate);

Théo
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_RMI
redam2005 22 Messages postés mercredi 18 mai 2005Date d'inscription 1 août 2005 Dernière intervention - 30 juin 2005 à 09:12
+3
Utile
Merci. J'ai résolu mon problème autrement. Je n'arrivais pas à atteindre mes comboBox depuis une fonction de la classe parceque la déclaration :
private ComboBox [] comboBoxs;
était dans le constructeur.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de redam2005
sebseb42 495 Messages postés dimanche 6 juillet 2003Date d'inscription 9 novembre 2007 Dernière intervention - 28 juin 2005 à 16:23
0
Utile
je ne connais pas de methode qui te permette de faire ca sans connaitre le type de ton objet a l'avance, a moins qu'ils est une interface que tu puisse exploiter, mais par contre si tu connais le type de ton objet, tu peux par exemple faire ca :

string name =
"lstTest";

ListBox lb = (
ListBox)
this.Controls[name];
lb.Items.Add(
"test");
lb.Items.Add(
"truc");

dans ma feuille j'ai un objet de type ListBox qui s'appel lstTest et je peux le controller de cette maniere
tu peux aussi acceder a tes controles via un index, mais par contre c'est "tous" les controles que tu choppe, ceci dit tu peux filtrer sur le type de l'instance et donc faire ceci si tu veux controller tous tes ListBox :



foreach (
Control ctrl
in
this.Controls)
{

if (ctrl
is
ListBox)
{
// traitement

MessageBox.Show(ctrl.Name);
}
}

J'espere que ca peut t'aider
Commenter la réponse de sebseb42
cs_RMI 305 Messages postés vendredi 18 juillet 2003Date d'inscription 2 août 2010 Dernière intervention - 28 juin 2005 à 17:15
0
Utile
Le plus simple est de stocker tes comboBox dans un tableau

ComboBox[] comboBoxs=new comboBox[]{cb1,cb2,cb3,...};

...

et puis

foreach (ComboBox combo in comboBoxs) {

combo.Add(..);

}
...
Théo
Commenter la réponse de cs_RMI
cs_RMI 305 Messages postés vendredi 18 juillet 2003Date d'inscription 2 août 2010 Dernière intervention - 28 juin 2005 à 17:17
0
Utile
ou

for (i=0;i<20;i++)

{

comboBoxs[i].Add(..)

}


Désolé, j'ai fait l'exemple pour des combobox et non des listbox (il faut que je lise mieux les questions..)
Théo
Commenter la réponse de cs_RMI
redam2005 22 Messages postés mercredi 18 mai 2005Date d'inscription 1 août 2005 Dernière intervention - 29 juin 2005 à 09:43
0
Utile
Je vais essayer ça, merci. Tu avais bien lu, on parle bien de comboBox..
Commenter la réponse de redam2005
redam2005 22 Messages postés mercredi 18 mai 2005Date d'inscription 1 août 2005 Dernière intervention - 29 juin 2005 à 10:12
0
Utile
Tu dis :
Le plus simple est de stocker tes comboBox dans un tableau
ComboBox[] comboBoxs=new comboBox[]{cb1,cb2,cb3,...};

Mais il faut bien déclarer avant cb1,cb2,... ?
Commenter la réponse de redam2005
cs_RMI 305 Messages postés vendredi 18 juillet 2003Date d'inscription 2 août 2010 Dernière intervention - 29 juin 2005 à 10:49
0
Utile
Si tu les déclare dynamiquement dans ton code

tu fais par exp

int iNb=3;

ComboBox[] comboBoxs=new comboBoxs[iNb]

for (int i=0;i<iNb;i++)

{

comboBoxs[i]=new ComboBox();

//defini toutes les propritée de tes comboboxs

cb.Location=...

...

}

Théo
Commenter la réponse de cs_RMI
cs_RMI 305 Messages postés vendredi 18 juillet 2003Date d'inscription 2 août 2010 Dernière intervention - 29 juin 2005 à 11:14
0
Utile
Si tu les déclare dynamiquement dans ton code

tu fais par exp

int iNb=3;

ComboBox[] comboBoxs=new comboBoxs[iNb]

for (int i=0;i<iNb;i++)

{

comboBoxs[i]=new ComboBox();

//defini toutes les propritée de tes comboboxs

comboBoxs[i].Location=... //Petite erreur

...

}

Théo
Commenter la réponse de cs_RMI
redam2005 22 Messages postés mercredi 18 mai 2005Date d'inscription 1 août 2005 Dernière intervention - 29 juin 2005 à 13:52
0
Utile
Tout compile bien ainsi mais rien ne s'affiche dans la fenêtre... Vois-tu quelquechose qui pourrait manquer ? Voici mon code :

"
int Nbcombo=i;
ComboBox[] comboBoxs=new ComboBox[Nbcombo];
for (int c=0;c<Nbcombo;c++)
{
MessageBox.Show("création de la combo "+c.ToString());
comboBoxs[c]=new ComboBox();
comboBoxs[c].Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
comboBoxs[c].Location = new System.Drawing.Point(520, (c*20)+5);
comboBoxs[c].MaxDropDownItems = 100;
comboBoxs[c].Name = "comboBox"+c;
comboBoxs[c].Size = new System.Drawing.Size(504, 23);
comboBoxs[c].TabIndex = c+2;
}

foreach (ComboBox combo in comboBoxs)
{
int j = 0;
while (Form1.Catalog[j]!=null)
{
combo.Items.Add(Form1.Catalog[j]);
j++;
}
}
"

Merci
Commenter la réponse de redam2005
redam2005 22 Messages postés mercredi 18 mai 2005Date d'inscription 1 août 2005 Dernière intervention - 29 juin 2005 à 14:48
0
Utile
Je venais juste de trouver en mettant :
this.Controls.Add(combo);
dans la boucle foreach.

Merci 1000*
a+
Commenter la réponse de redam2005
cs_RMI 305 Messages postés vendredi 18 juillet 2003Date d'inscription 2 août 2010 Dernière intervention - 29 juin 2005 à 15:14
0
Utile
Avec Plaisir

Théo
Commenter la réponse de cs_RMI
redam2005 22 Messages postés mercredi 18 mai 2005Date d'inscription 1 août 2005 Dernière intervention - 29 juin 2005 à 17:25
0
Utile
Autre problème !! Est-il possible de gérer des événements sur ces controls dynamiques ??
Ou même est-il possible ne serait-ce que d'accéder aux valeurs de ces comboBox dans une autre méthode de cette même classe ?

Damien
Commenter la réponse de redam2005

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.