Remplir plusieurs combobox

cs_nehla Messages postés 49 Date d'inscription jeudi 23 mars 2006 Statut Membre Dernière intervention 18 juin 2009 - 15 août 2008 à 11:32
TeBeCo Messages postés 467 Date d'inscription lundi 24 juin 2002 Statut Membre Dernière intervention 9 mars 2011 - 19 août 2008 à 12:49
salut
j'ai crée plusieurs combobox et je veux remplir par les memes informations.
comment je peux le faire en c#.
merci d'avance pour votre aide.
voici le code de creation de plusieurs combobox
int x=24;
            for(int i=0; i<3; i++)
            {  
                ComboBox c= new ComboBox();
                c.Location=new System.Drawing.Point(8,x);
                c.Name="combo("+i+")";
                x+=32;
                groupBox3.Controls.Add(c);
            }

nehloucha

10 réponses

ikaer Messages postés 42 Date d'inscription lundi 14 janvier 2008 Statut Membre Dernière intervention 23 septembre 2008
15 août 2008 à 12:02
Ajoutes les lors de leur création à une List<ComboBox>, aprés lorsque tu voudras changer une information, tu pourras faire un foreach sur cette liste
0
WishhhMaster Messages postés 327 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 10 avril 2010 8
15 août 2008 à 12:22
Salut,

SI tu veux les remplir au moment où tu les crée, tu peux faire comme ça

string[] items = new string[]{"element1","element2","element"}; //ce que tu veux mettre das tes combobox

int x=24;
            for(int i=0; i<3; i++)
            {  
                ComboBox c= new ComboBox();
                c.Location=new System.Drawing.Point(8,x);
                c.Name="combo("+i+")";
                x+=32;
                groupBox3.Controls.Add(c);

       foreach(string item in items)
            c.Items.Add(item);//ajoute les éléments au combobox
            }
0
lemmingperceval Messages postés 128 Date d'inscription mardi 18 décembre 2007 Statut Membre Dernière intervention 2 août 2009 6
15 août 2008 à 12:51
ikaer, a propos de cette List<combobox>, si tu fais un foreach (ComboBox c in this.Controls) ca marche pas?</combobox>
0
ikaer Messages postés 42 Date d'inscription lundi 14 janvier 2008 Statut Membre Dernière intervention 23 septembre 2008
15 août 2008 à 12:54
je sais pas, je n'ai pas testé, mais j'avais souvenir que non.
0

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

Posez votre question
lemmingperceval Messages postés 128 Date d'inscription mardi 18 décembre 2007 Statut Membre Dernière intervention 2 août 2009 6
15 août 2008 à 13:01
J'ai testé. C'est bizard, en faite ca marche si tu as que des ComboBox dans ton control container.
Dans mon test, j'ai mis 3 comboBox, j'ai pu effectuer le foreach. Ensuite j'ai rajouter un label, et là, le foreach est passé sur le label et m'a fait sauter une exception de type InvalidCastException. Normalement, foreach(ComboBox c in...) n'est pas censé bouclé uniquement sur les ComboBoxs? Là il le fait sur tous les Controls contenu dans le parent.
0
WishhhMaster Messages postés 327 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 10 avril 2010 8
15 août 2008 à 13:19
foreach(ComboBox c in this.Controls) te jettera une exception si un des controls n'est pas une combobox, parce que c'est impossible de faire un cast d'un control quelquonque en combobox.

Ceci doit marcher:

Combobox cbb;
foreach(Control c in this.Controls)
{
    cbb = c as Combobox;
    if(cbb!=null)
    {
       //ici on est sur que le control est un combobox
    }
    else
    {
    //control autre que combobox
    }

}
0
ikaer Messages postés 42 Date d'inscription lundi 14 janvier 2008 Statut Membre Dernière intervention 23 septembre 2008
15 août 2008 à 13:21
oki merci de l'info WishMaster :)
0
WishhhMaster Messages postés 327 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 10 avril 2010 8
15 août 2008 à 13:23
De rien :)
0
TeBeCo Messages postés 467 Date d'inscription lundi 24 juin 2002 Statut Membre Dernière intervention 9 mars 2011
19 août 2008 à 12:48
y a une maniere assez simple de faire ca
c'est presque ce que te proposait ikaer
ce n'est pas une List<ComboBox> que j'utiliserais
mais plutot un :
Dictonnary<String, ComboBox> mesCombos;
ce qui te permet dans ta boucle :

mesCombos = new Dictonnary<String, ComboBox> ();
for(int i = 0; i < n; i++)
{
   ComboBox c = new ComboBox();
   ...
   c.Name = "combo" + i.ToString();
   ...
   mesCombo.Add(c.Name, c);

   InitCombo(c);
}

et par la suite si tu pourrais faire :
mesCombo["combo3"].Items.Add("...");
par exemple qui correspondrais a un  :
combo3.Items.Add("...");
sauf que tu peux le rendre dynamique avec :
mescombo["combo"+i.ToString()].....

void InitCombo(ComboBox c)
{
   c.Items.Add(....);
....
}

Les type generique offre enormement de possibilité
pour la création de controle dynamique il vaux mieux s'en tenir a un dictionary qui t'empechera la création de 2 control ayant le meme nom (chose en tte logique impossible)
et qui te permettra un acces direct a ton controle depuis son nom sous forme de String

TeBeCo
0
TeBeCo Messages postés 467 Date d'inscription lundi 24 juin 2002 Statut Membre Dernière intervention 9 mars 2011
19 août 2008 à 12:49
(pense a valider le post une fois que tu as eu ta reponse ca evite de laisser des sujet ouvert et des gens qui revienne etc ...)

TeBeCo
0