Ce doit être très facile, mais je suis coincé.
J'ai une listBox avec les X Articles. Chaque Élément a un texte de description Qui s'affiche dans la zone de liste) et sa valeur(numérique).
Je veux être en mesure d'obtenir la valeur de la propriété d'un élément, en utilisant le numéro d'index de l'élément.
source d'informationauteur tzam
Il serait
Ici je ne peux pas le voir, même une seule bonne réponse à cette question (en WinForms tag) et c'est étrange pour une telle question fréquente.
Éléments d'un
ListBox
de contrôle peut êtreDataRowView
des Objets Complexes, des Anonymes, des types, des types primaires et d'autres types. Valeur sous-jacente d'un élément doit être calculé sur la base deValueMember
.ListBox
de contrôle a unGetItemText
qui vous aide à obtenir le texte d'un élément quel que soit le type d'objet que vous avez ajouté comme élément. Il a vraiment besoin d'un telGetItemValue
méthode.GetItemValue Méthode D'Extension
Nous pouvons créer
GetItemValue
méthode d'extension pour obtenir la valeur de l'élément qui fonctionne commeGetItemText
:Utilisant la méthode ci-dessus, vous n'avez pas besoin de vous soucier des paramètres de
ListBox
et il sera de retour prévuValue
pour un élément. Il fonctionne avecList<T>
Array
ArrayList
DataTable
la Liste des Types Anonymes, la liste des principaux types et de toutes les autres listes que vous pouvez utiliser comme source de données. Voici un exemple d'utilisation:Depuis que nous avons créé le
GetItemValue
méthode comme une méthode d'extension, lorsque vous souhaitez utiliser la méthode, n'oubliez pas d'inclure l'espace de noms que vous faites de la classe.Cette méthode est applicable sur
ComboBox
etCheckedListBox
trop.Si vous travaillez sur un projet windows forms, vous pouvez essayer ce qui suit:
Ajouter des éléments à la
ListBox
commeKeyValuePair
objets:Alors vous serez en mesure de récupérer la manière suivante:
Je suis en utilisant un BindingSource avec un SqlDataReader derrière elle et aucun des travaux ci-dessus pour moi.
Question pour Microsoft: Pourquoi ce travail:
Mais cela ne veut pas?
Je trouve que je dois aller retour pour le BindingSource de l'objet, de le jeter comme un Système.Les données.Commun.DbDataRecord, puis reportez-vous à son nom de la colonne:
Maintenant, c'est juste ridicule.
Supposons que vous voulez que la valeur du premier élément.
Cela fonctionne pour moi:
simplement essayer cette
listBox est votre liste et yu est un vériables pour qui la valeur de l'indice 0 sera attribuée