Liste de comboBox

Résolu
redam2005 Messages postés 22 Date d'inscription mercredi 18 mai 2005 Statut Membre Dernière intervention 1 août 2005 - 28 juin 2005 à 15:26
redam2005 Messages postés 22 Date d'inscription mercredi 18 mai 2005 Statut Membre Dernière intervention 1 août 2005 - 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

14 réponses

cs_RMI Messages postés 305 Date d'inscription vendredi 18 juillet 2003 Statut Membre Dernière intervention 2 août 2010 2
29 juin 2005 à 14:35
Tu dois indiquer que tes bouton appartiennent à ta form

Rajoute

this.Controls.AddRange(comboBoxs);

aprés ta boucle de création

Théo
3
cs_RMI Messages postés 305 Date d'inscription vendredi 18 juillet 2003 Statut Membre Dernière intervention 2 août 2010 2
30 juin 2005 à 08:41
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
3
redam2005 Messages postés 22 Date d'inscription mercredi 18 mai 2005 Statut Membre Dernière intervention 1 août 2005
30 juin 2005 à 09:12
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.
3
sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 1
28 juin 2005 à 16:23
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
0

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

Posez votre question
cs_RMI Messages postés 305 Date d'inscription vendredi 18 juillet 2003 Statut Membre Dernière intervention 2 août 2010 2
28 juin 2005 à 17:15
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
0
cs_RMI Messages postés 305 Date d'inscription vendredi 18 juillet 2003 Statut Membre Dernière intervention 2 août 2010 2
28 juin 2005 à 17:17
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
0
redam2005 Messages postés 22 Date d'inscription mercredi 18 mai 2005 Statut Membre Dernière intervention 1 août 2005
29 juin 2005 à 09:43
Je vais essayer ça, merci. Tu avais bien lu, on parle bien de comboBox..
0
redam2005 Messages postés 22 Date d'inscription mercredi 18 mai 2005 Statut Membre Dernière intervention 1 août 2005
29 juin 2005 à 10:12
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,... ?
0
cs_RMI Messages postés 305 Date d'inscription vendredi 18 juillet 2003 Statut Membre Dernière intervention 2 août 2010 2
29 juin 2005 à 10:49
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
0
cs_RMI Messages postés 305 Date d'inscription vendredi 18 juillet 2003 Statut Membre Dernière intervention 2 août 2010 2
29 juin 2005 à 11:14
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
0
redam2005 Messages postés 22 Date d'inscription mercredi 18 mai 2005 Statut Membre Dernière intervention 1 août 2005
29 juin 2005 à 13:52
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
0
redam2005 Messages postés 22 Date d'inscription mercredi 18 mai 2005 Statut Membre Dernière intervention 1 août 2005
29 juin 2005 à 14:48
Je venais juste de trouver en mettant :
this.Controls.Add(combo);
dans la boucle foreach.

Merci 1000*
a+
0
cs_RMI Messages postés 305 Date d'inscription vendredi 18 juillet 2003 Statut Membre Dernière intervention 2 août 2010 2
29 juin 2005 à 15:14
Avec Plaisir

Théo
0
redam2005 Messages postés 22 Date d'inscription mercredi 18 mai 2005 Statut Membre Dernière intervention 1 août 2005
29 juin 2005 à 17:25
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
0
Rejoignez-nous