2012-12-19 25 views
7

Mam listę typu X. X jest klasą poziomu właściwości. Teraz na zdarzenie potrzebuję zaznaczonych elementów CheckedListBox na inną listę.Jak zdobyć zaznaczone elementy CheckedListBox na liście <X> ...?

Jak uzyskać wyjście ... ?? Kod próbowałem znajduje się poniżej ...

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

projekt WWW? aplikacja Windows? –

+0

Znajomy aplikacji dla systemu Windows ... –

+0

Prawdopodobny duplikat [Przesyłanie kolekcji przedmiotów z listy do ogólnej listy] (http://stackoverflow.com/questions/471595/casting-an-item-collection-from-a-listbox -to-a-generic-list) –

Odpowiedz

15

można spróbować następujących

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

lub odlewane jako przedmiot

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

+1 to działa dobrze, nie widzę powodu, aby dodać moją odpowiedź opartą na foreach :) –

+0

faktycznie używam DevExpress, więc powyższe rozwiązanie nie będzie działać. Ale dało mi to iskrę, aby uzyskać moje rozwiązanie ... tanx kolego .. –

+0

@RavishankarN można użyć 'Cast' zamiast' OfType', aby to działało. – nawfal

0

Dostałem odpowiedź

private void Click_Event(object sender, EventArgs e) 
{ 

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

Oto sposób, który działa r mnie:

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

Jest to kolejna opcja

List<X> lst = new List<X>(chkList.CheckedItems.Cast<X>()); 
Powiązane problemy