cs_nehla
Messages postés49Date d'inscriptionjeudi 23 mars 2006StatutMembreDernière intervention18 juin 2009
-
15 août 2008 à 11:32
TeBeCo
Messages postés467Date d'inscriptionlundi 24 juin 2002StatutMembreDerniè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);
}
lemmingperceval
Messages postés128Date d'inscriptionmardi 18 décembre 2007StatutMembreDernière intervention 2 août 20096 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.
WishhhMaster
Messages postés327Date d'inscriptionmardi 17 février 2004StatutMembreDernière intervention10 avril 20108 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
}
TeBeCo
Messages postés467Date d'inscriptionlundi 24 juin 2002StatutMembreDerniè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