none
Champ affiché par une ListBox RRS feed

  • Question

  • Bonjour tout le monde,

    Le contrôle ListBox a un champ DisplayMember où dire quel champ on veut afficher, et un champ ValueMember pour dire quel champ doit retourner la valeur de l'enregistrement.

    Est-ce qu'on peut utiliser l'un sans l'autre ? Est-ce qu'il faut préciser un nom de classe, quelque part ?

    Dans DisplayMember j'ai mis Name, qui contient le texte à afficher, dans ValueMember rien, puisque c'est juste le nom qui m'intéresse. J'ai défini une classe, que je n'ai pas précisée dans les propriétés de la ListBox.

    Le souci est qu'à la place du Name, la ListBox m'affiche le nom du type, avec son espace de noms, ce qui ne fait pas vraiment mon affaire.

    Alors j'ai dérivé la propriété toString() de la classe, ce qui a résolu le problème, ce qui ne m'empêche pas de vouloir savoir au juste comment fonctionne ListBox, il serait quand même temps.

    mardi 27 octobre 2020 02:02

Réponses

  • Il y a deux façons d'alimenter une ListBox :

    • placer les données dans une IList (ou IListSource) et passer celle-ci à la propriété DataSource ; dans ce cas pour chaque élément la valeur affichée sera la propriété dont le nom est passé à la propriété DisplayMember, la valeur retournée sera la propriété dont le nom est passé à la propriété ValueMember
    • ajouter les données à la collection désignée par la propriété Items ; pour chaque élément la valeur affichée sera sa propriété ToString().

    Mon application avait une fesse sur chaque chaise, puisque j'ai commencé par seulement afficher les noms des fichiers et Items faisait très bien l'affaire, et en cours de route j'ai ajouté une autre propriété.



    • Modifié Gloops mercredi 4 novembre 2020 21:22
    • Marqué comme réponse Gloops mercredi 4 novembre 2020 21:23
    mercredi 4 novembre 2020 21:21