2010-11-02 6 views
2

Est-il possible de convertir une ListBox.SelectedObjectCollection en ListBox.ObjectCollection en C#? Si oui, comment pourrais-je m'y prendre?Lance une ListBox.SelectedObjectCollection en ListBox.ObjectCollection?

+1

Qu'est-ce que vous essayez de faire? – SLaks

+1

J'ai deux méthodes identiques, sauf que l'une d'entre elles accepte tous les éléments d'une liste ("Ajouter toutes les imprimantes"), et une autre qui n'ajoute que les éléments sélectionnés ("Ajouter les imprimantes sélectionnées"). Je veux le faire avec une surcharge, mais plutôt que de boucler pour mettre les valeurs dans un tableau que je voulais savoir si je pouvais les faire passer à quelque chose. – ChristianLinnell

Répondre

4

Ceci n'est pas possible. À la place, vous devez utiliser un IList.
Ces deux types implémentent IList, donc vous pouvez passer l'un comme un IList sans aucune conversion explicite.

Si vous le souhaitez vraiment, vous pouvez créer un nouveau ListBox.ObjectCollection et ajouter les éléments du SelectedObjectCollection.

+0

qu'en est-il de @ 341184 réponse? – Kiquenet

+0

@Kiquenet: Il est _copying_, pas de casting. En outre, il n'utilise pas 'ObjectCollection'. – SLaks

1

Voici ma réponse: ça marche pour moi.

System.Windows.Forms.ListBox.SelectedObjectCollection lst =this.lstImage.SelectedItems; 
List<string> selectedItems = new List<string>(); 

foreach (object obj in lst) 
{ 
    selectedItems.Add(obj.ToString()); 
} 
0
List<YourDataType> YourDataTypeList = new List<YourDataType>(); 
    for (int i = 0; i < lbVectors.SelectedItems.Count; i++) 
    { 
     YourDataType v = lbVectors.SelectedItems[i] as YourDataType; 
     YourDataTypeList .Add(v); 
    } 
8

J'ai une fonction qui accepte List<string>.

Je peux transmettre à la fois SelectedItems et Items en les affichant.

Essayez ceci:

SelectedItems.Cast<string>().ToList() 
Items.Cast<string>().ToList() 

<string> pourrait être remplacé par un autre type d'objet.

0

Ceci est ma réponse je convertir liste Vérifié à la liste boîte

CheckedListBox.CheckedItemCollection s= checkedListBox1.CheckedItems; 

     List<object> ns = new List<object>(); 

     foreach (object ob in s) 
     { 
      ns.Add(ob); 
     } 

     listBox1.Items.AddRange(ns.ToArray()); 
Questions connexes