Waylander59
Messages postés11Date d'inscriptionvendredi 11 septembre 2015StatutMembreDernière intervention 7 octobre 2015
-
Modifié par Whismeril le 6/10/2015 à 21:12
Whismeril
Messages postés18991Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention27 mars 2024
-
7 oct. 2015 à 21:43
Bonjour à tous !
Voilà, il y a fort longtemps, j'ai su faire une chose magique.. Que je n'arrive plus à faire ! Je vous explique :
Waylander59
Messages postés11Date d'inscriptionvendredi 11 septembre 2015StatutMembreDernière intervention 7 octobre 2015 7 oct. 2015 à 09:02
Je vais essayer d'être le plus clair possible.
J'ai 5 comboBox. Les noms de ces 5 comboBox sont identiques, je rajoute juste une incrémentation derrière (comboBox1, comboBox2...).
Je souhaite instancier les items de ces comboBox dans une boucle. Comment puis-je faire cela (en jouant avec le nom des comboBox) ?
Whismeril
Messages postés18991Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention27 mars 2024654 7 oct. 2015 à 09:45
Ok mais tes items viennent d'ou?
Par ce que dans ton code tu remplis tes combo avec le texte "Mon Item".
A part avoir 5 listes remplies de "Mon Items" ça ne sert à rien.
Donc afin de te répondre correctement et en .Net (ce que tu as écrit c'est du VB6 traduit mot à mot et donc ça ne marche pas...), il me faut plus de détails.
Il y a quand même de grandes chances ce que tu souhaites afficher (note que je n'ai pas écrit le texte à entrer, car c'est différent) n'est pas toujours pareil, et il est aussi facile de supposer que tu vas voulloir lier une action quelquonque à la selection d'un item dans l'un des combo....
Waylander59
Messages postés11Date d'inscriptionvendredi 11 septembre 2015StatutMembreDernière intervention 7 octobre 2015
>
Whismeril
Messages postés18991Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention27 mars 2024 Modifié par Waylander59 le 7/10/2015 à 10:05
Mes items viennent d'un tableau de chaines (string[]) que je récupère d'une table (BdD locale). Je veux instancier mes 5 comboBox avec ce tableau de chaines.
J'avais écrit "monItem" juste pour l'exemple.
Voilà actuellement ce que je fais :
Race race = new Race(); races = race.ListerRaces(); // races est un string[]
for (int i = 0; i < races.Length; i++) { comboBoxRaces1.Items.Add(races[i]); comboBoxRaces2.Items.Add(races[i]); comboBoxRaces3.Items.Add(races[i]); comboBoxRaces4.Items.Add(races[i]); comboBoxRaces5.Items.Add(races[i]); }
Bien sûr, les items sont amenés à être modifiés/supprimés. Par exemple, lorsque je clique sur le bouton "1", il va supprimer un item de mon comboBoxRaces1. Si je clique sur le bouton "2", il va supprimer un item de mon comboBoxRaces2 etc..
Whismeril
Messages postés18991Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention27 mars 2024654 7 oct. 2015 à 21:43
Bonsoir, vite fait en fonction de ce que tu as dit
Dictionary<ComboBox,List<string>> dico = new Dictionary<ComboBox,List<string>>();//pour associer source de données et combo
private void Waylander()
{
string[] monTableau = { "Coucou", "Salut", "Bonjour", "Hello", "Konichiwa","Ola" };
foreach (ComboBox combo in this.Controls.OfType<ComboBox>().Where(c => c.Name.StartsWith("combo")))
{
List<string> source = monTableau.ToList();//le cast en list créer une source différente par combo, de plus cette liste sera modifiable puisque tu veux supprimer tel ou tel item
combo.DataSource = source;
dico.Add(combo,source);
}
}
le problème de binder de cette façon est que pour afficher les mise à jour de la liste il est nécessaire de supprimer la liaison et de la refaire (d'ou le dictionnaire).