Checkedlistbox affichage

Résolu
rours Messages postés 61 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 24 février 2010 - 29 mai 2009 à 14:28
rours Messages postés 61 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 24 février 2010 - 29 mai 2009 à 16:27
Bonjour.

Pour simplifier on va schématiser ainsi :
J'ai  2 class :
class A
string nom;
List b;

et class B
String nomB;
int intB;

Je rempli une checkedlistbox avec une List ListA, j'ai donc sur chaque ligne un objet A.
Le probleme est le suivant, au niveau de l'affichage c'est tres laid, En effet il m'affiche A (le type de l'objet).
Idéalement je voudrai avoir le nom de mon objet.
Une solution simple est que lorsque je remplit ma checkedlistbox, je fasse :
while ...
   checkedlistbox.Items.add(ListA[i].getName());

La du coup ça marche bien, sauf que dans ma checkedlistbox je veux avoir des objet A et non un "string".
(Le but de tout ça étant que je dois afficher dans une autre checkedlistbox la liste d'objet B correspodant à l'objet A selectionné. Ce qui est impossible si je n'ai pas un objet dans ma premiere checkedlistbox).

Pour résumer, soit l'affichage de ma checkedlistbox est foireux, mais je peut faire le lien avec la 2ieme.
Soit l'affichage est correct mais je ne peux pas faire le lien.

Je suis surement passé à coté de quelque chose mais bon, j'ai beau cherché, les seuls exemples que j'ai trouvé sont ultra simpliste et/ou ne corresponde pas.

Une option serai de faire une fonction de recherche qui a partir du nom retrouverai l'objet correspondant mais j'aimerai si possible l'éviter.

Si quelqu'un à une idée !

1 réponse

rours Messages postés 61 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 24 février 2010
29 mai 2009 à 16:27
Bon j'ai trouvé une solution, je la dit vite fait si jamais des gens peuvent y voir une utilitée.

Il faut remplacer la checkedlistbox par une listbox. Changer la valeur de selectionMode pour pouvoir faire des choix multiples.

Ensuite dans la classe A il faut ajouter :

public

string NameGet{

get{
return _Name;}}

Puis faire :

public
void InitboxA(
List InitAList){

listBox1.DataSource = InitAList;

listBox1.DisplayMember =

"NameGet";//ça va afficher juste le nom dans la listebox}

Et enfin pour faire aparaitre les valeurs correspondante dans la checkedlistbox (celle pour les éléments "B").

private

void listBox1_SelectedIndexChanged(
object sender,
EventArgs e){

ListBox.
SelectedObjectCollection ind;checkedListBox2.Items.Clear();

ind = listBox1.SelectedItems;

foreach (
A a
in ind)      InitCheckboxB(a.getB());

}

 
3
Rejoignez-nous