Boozdeuvash
Messages postés8Date d'inscriptionlundi 11 septembre 2006StatutMembreDernière intervention19 septembre 2006
-
11 sept. 2006 à 12:05
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 2013
-
11 sept. 2006 à 18:32
C'est peut-être complètement tordu, mais j'aimerais faire ceci:
J'ai un struct appelée "camion" qui contient trois string : marque, vitesse, chauffeur
J'aia créé 3 variables camions : Cam1, Cam2 et Cam3
J'ai une listBox avec 3 éléments : il s'agit des :
Cam1.chauffeur, Cam2.chauffeur et Cam3.chauffeur, j'ai donc une liste avec le nom des trois chauffeurs
Lorsque je clic sur un élément de la liste, je le récupère avec :
listBox.selectedItem.ToString()
j'aimerais récupérer la variable "camion" auquel elle appartient pour
pouvoir ensuite afficher la marque et la vitesse dans un label. Et je
n'ai aucune idée de la façon de le faire.
une autre méthode serait d'associer un objet à chaque élément d'une listBox, mais je suis pas sur que ce soit possible.
Donc si quelqu'un a une solution pratique, facile et efficace , ça serait super.
Si vous avez une solution peu pratique, pas facile mais quand même efficace, ça ira aussi :)
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 11 sept. 2006 à 12:31
Salut,
C'est tres facile a faire.
Ajoutes toutes les instances de Camion dans une List<Camion> (ou ArrayList si tu bosses en .Net 1).
Affecte cette List a la propriété DataSource de ton ListBox;
Affecte la ta propriété "Chauffeur" de ta classe Camion a la propriété DisplayMember de ton ListBox.
Tu peux maintenant recuperer l'instance du camion selectionné via la propriété SelectedItem de ton ListBox :)
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 11 sept. 2006 à 12:32
Salut,
C'est évident qu'il faut associer ton object à ta liste, pas juste un string :
this.listBox1.Items.Add(monCamion);
// Ajout du camion
Camion camion =
this.listBox.SelectedItem
as
Camion;
// Récupération du camionIl ne serait pas inutile de vérifier que camion n'est pas null...
Et sachant que la ListBox affiche le string renvoyer par ToString(), il suffit d'overrider cette dernière dans la classe camion pour personnaliser l'affichage...
c'est sur cette dernière ligne que ça bloque, ça marche pas vu que ce
qui est affiché dans la listebox est "windowsApplication2.camio,". Un
peu ennuyeux, si vous pouviez m'expliquer ce qu'il faut mettre en
displaymember sachant que ma struct est ainsi:
Boozdeuvash
Messages postés8Date d'inscriptionlundi 11 septembre 2006StatutMembreDernière intervention19 septembre 2006 11 sept. 2006 à 13:48
Ahr, c'est rageant ça marchait presque:
Si je fais exactement comme tu me dit mx, j'ai une erreur lors de
l'affectation de la variable cam1.chauffeur (et aussi cam2.chauffeur
etc...): La propriété ou l'indexeur
'WindowsApplication2.form1.camion.chauffeur' ne peut pas être assigné
-- il est en lecture seule
Si je met aussi le set, il me génère un stack overflow (boucle
infinie?). Enfin, si j'enlève les affectations de variables, j'ai aussi
un stackoverflow.
Bref, plus ça avance, plus ça me parait compliqué.
List<
Camion> camions =
new
List<
Camion>();
camions.Add(
new
Camion(1,
"Un"));
camions.Add(
new
Camion(2,
"Deux"));
camions.Add(
new
Camion(3,
"Trois"));
camions.Add(
new
Camion(4,
"Quatre"));