2010-06-18 3 views

Répondre

4

Examinez la propriété SelectedItems et parcourez-la pour voir quels éléments sont sélectionnés.

Si vous souhaitez parcourir tous les éléments, vous pouvez comparer les deux collections (MyListBox.Items et MyListBox.SelectedItems) et voir lesquelles correspondent.

quelque chose comme:

foreach(Item item in MyListBox.Items)   
    if(MyListBox.SelectedItems.Contains(item) 
     MyObject.Value = true; 
    else 
     MyObject.Value = false; 

Overkill mais vraiment! Je suppose qu'il y a un but si vous voulez faire quelque chose à tous les articles qui sont non sélectionnés cependant, est ce que vous cherchez à faire? Il existe de bien meilleures façons de faire cela - Randolpho est correct, la liaison de données serait un meilleur moyen d'y parvenir en fonction de la façon dont vos données sont organisées/entrées et quelle est la taille de la liste.

+0

Je veux faire quelque chose à l'objet sous-jacent - s'il est sélectionné, mettre une valeur à true - s'il est désélectionné puis réglez-le sur false. – Vidar

+1

@Vidar: vous devriez vous intéresser à la liaison de données en général et au modèle [Model View View-Model] (http://msdn.microsoft.com/fr-fr/magazine/dd419663.aspx) en particulier. – Randolpho

+0

Ma solution comme ci-dessus fonctionnerait pour ce que vous voulez - il suffit d'ajouter autre chose à cette instruction if, et ensuite faire ce que vous voulez pour l'objet là-bas. Je vais modifier ma réponse. – Spud1

1

ListBox possède une propriété SelectedItems. Cette collection contiendra des références aux éléments qui ont été sélectionnés.

+0

oui il ramène tous les éléments sélectionnés - mais je veux regarder à travers tous les éléments et voir si elle a été sélectionnée ou non - je ne veux pas seulement regarder les éléments sélectionnés purement. – Vidar

+0

@Vidar: Pourquoi pas? Si vous n'êtes concerné que par les éléments sélectionnés, cette collection est pré-filtrée. Si vous avez vraiment besoin de parcourir toute la collection et de trouver celles qui sont sélectionnées, vous pouvez le faire avec un appel '.Contains' sur' SelectedItems', mais il me semble que votre approche est peut-être désactivée. Peut-être que vous pouvez mieux l'expliquer et je peux vous guider dans la bonne direction. – Randolpho

+0

Je pense que mon approche est peut-être désactivée = je ne suis pas encore sûr, car j'accélère un peu ce code ... – Vidar

Questions connexes