2012-12-19 4 views
7

Ho una lista di tipo X. X è una classe di livello di proprietà. Ora su un evento ho bisogno degli elementi selezionati di CheckedListBox in un altro elenco.Come ottenere gli elementi selezionati di CheckedListBox nell'elenco <X> ...?

Come ottenere l'output ... ?? il codice che ho provato è il seguente ...

public void Initialize(List<X> x1) 
{ 
     chkList.DataSource = x1; 
     chkList.DisplayMember = "MeterName"; // MeterName is a property in Class X 
     chkList.ValueMember = "PortNum"; // PortNum is a property in Class X 
} 

private void Click_Event(object sender, EventArgs e) 
{ 

List<X> x2 = new List<X>(); 
// Here I want to get the checkedListBox selected items in x2; 
// How to get it...??? 

} 
+0

progetto web? app di Windows? –

+0

Compagno di app di Windows ... –

+0

Possibile duplicato di [Trasmettere una raccolta di elementi da una listbox a un elenco generico] (http://stackoverflow.com/questions/471595/casting-an-item-collection-from-a-listbox -to-a-generic-list) –

risposta

15

è possibile provare il seguente

List<X> x2 = chkList.CheckedItems.OfType<X>().ToList(); 

o lanciato come oggetto

List<object> x2 = chkList.CheckedItems.OfType<object>().ToList(); 
+0

+1 funziona bene, non vedo alcun motivo per aggiungere la mia risposta basata su foreach :) –

+0

effettivamente sto usando DevExpress quindi la soluzione sopra non funzionerà lì. Ma mi ha dato una scintilla per ottenere la mia soluzione ... tanx buddy .. –

+0

@RavishankarN puoi usare 'Cast' invece di' OfType' per farlo funzionare. – nawfal

0

ho avuto la risposta

private void Click_Event(object sender, EventArgs e) 
{ 

List<X> x2 = new List<X>(); 
foreach (X item in chkList.CheckedItems) 
    { 
     x2.Add(item); 
    } 
} 
0

Ecco un modo che funziona per mi r:

List<X> x2 = new List<X>(); 
x2 = chkList.CheckedItems.Cast<X>().ToList(); 
0
string[] miList = chkList.CheckedItems.OfType<object>().Select(li => li.ToString()).ToArray(); 
0

Questa è un'altra opzione

List<X> lst = new List<X>(chkList.CheckedItems.Cast<X>());