2012-12-19 3 views
7

У меня есть список типа X. X - класс уровня собственности. Теперь в событии мне нужно, чтобы CheckedListBox выбрал выбранные элементы в другой список.Как получить CheckedListBox Выбранные элементы в список <X> ...?

Как получить выход ... ?? код я попытался приводится ниже ...

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

веб-проект? windows app? –

+0

Приложение для Windows appdy ... –

+0

Возможный дубликат [Листинг коллекции предметов из списка в общий список] (http://stackoverflow.com/questions/471595/casting-an-item-collection-from-a-listbox -to-a-generic-list) –

ответ

15

вы можете попробовать следующее

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

или отливать в качестве объекта

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

+1 это отлично работает, я не вижу причин добавить мой ответ на foreach :) –

+0

фактически я использую DevExpress, поэтому вышеупомянутое решение не будет работать там. Но это дало мне искру, чтобы получить мое решение ... tanx buddy .. –

+0

@RavishankarN вы можете использовать 'Cast' вместо' OfType', чтобы заставить это работать. – nawfal

0

я получил ответ

private void Click_Event(object sender, EventArgs e) 
{ 

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

Вот как это работает г мне:

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

Это еще один вариант

List<X> lst = new List<X>(chkList.CheckedItems.Cast<X>()); 
Смежные вопросы