OVH Cloud OVH Cloud

Winform - ListBox et SelectedIndex = -1

1 réponse
Avatar
fragmonster
J'ai remarqu=E9 un comportement =E9trange concernant l'utilisation des
controles ListBox dans les application Winform. Si je souhaite peupler
ma liste en utilisant la syntaxe suivante :

MaListe.DataSource =3D MaDataTable;
MaListe.DisplayMember =3D "Nom";
MaListe.ValueMember =3D "ID";

Et bien si j'utilise la syntaxe ci-dessus, je suis incapable de
d=E9selectionner le premier =E9l=E9ment de ma liste.
MaListe.SelectedIndex =3D -1 n'a aucun effet.

Par contre, si je boucle sur ma source de donn=E9es afin de faire des
Maliste.Items.Add(...) et de la peupler "=E0 la main", dans ce cas
j'arrive =E0 d=E9selectionner le premier =E9l=E9ment.

Quelle est l'explication =E0 ce comportement?

1 réponse

Avatar
Pierre
en cas de liaison (Binding) à une source de donnée la propriété ValueMember
fait appel à SelectedValue (gestion de l'évenement SelectedValueChanged) et
en aucun cas à SelectedIndex.
par contre, la méthode de remplissage manuelle ..Add(obj) se refère à
SelectedIndex.

c'est vrai qu'avec un DataSource, on n'a pas la possibilité(sauf si
quelqu'un sait comment faire) de vider la propriété text du Controle. Moi à
chaque fois, j'utilise dans ma source de donnée un Item nommé "Aucun" qui
est l'élément selectionné par defaut lorsqu'on n'a rien selectionné. en
supposant que le valueMenber de aucun soit "AUC" il suffit de faire
Malist.SelectedValue = "AUC" au chargement.

@+

"fragmonster" a écrit dans le message de news:

J'ai remarqué un comportement étrange concernant l'utilisation des
controles ListBox dans les application Winform. Si je souhaite peupler
ma liste en utilisant la syntaxe suivante :

MaListe.DataSource = MaDataTable;
MaListe.DisplayMember = "Nom";
MaListe.ValueMember = "ID";

Et bien si j'utilise la syntaxe ci-dessus, je suis incapable de
déselectionner le premier élément de ma liste.
MaListe.SelectedIndex = -1 n'a aucun effet.

Par contre, si je boucle sur ma source de données afin de faire des
Maliste.Items.Add(...) et de la peupler "à la main", dans ce cas
j'arrive à déselectionner le premier élément.

Quelle est l'explication à ce comportement?