Коллекция объектов в список <> не работает - PullRequest
8 голосов
/ 25 декабря 2011

У меня есть этот код для приведения CheckedListBox.Items к List<Item>:

List<Item> items = ChkLsBxItemsToDraw.Items as List<Item>;

а это мой Item класс

public class Item
{
    public List<double> x = new List<double>();
    public List<double> y = new List<double>();
}

Я установил CheckedListBox.DataSource в List<Item>

и я получил эту ошибку:

Ошибка 1 Невозможно преобразовать тип 'System.Windows.Forms.CheckedListBox.ObjectCollection' в 'System.Collections.Generic.List<Drower.Item>' с помощью преобразования ссылок, преобразования в бокс, преобразования в коробку, преобразования в оболочку или преобразования нулевого типа

Как я могу получить CheckedListBox.Items как List<Item> ???

Ответы [ 3 ]

15 голосов
/ 25 декабря 2011

Свойства DataSource и Items не связаны. Тот факт, что вы устанавливаете первое свойство, не означает, что вы получите что-то во втором. Например, если вы проверите количество элементов, это будет 0: ChkLsBxItemsToDraw.Items.Count.

Вы можете добавить элементы в свойство Items:

List<Item> items = ...
ChkLsBxItemsToDraw.Items.AddRange(items.ToArray());

, а затем получить их обратно в виде списка:

List<Item> items = ChkLsBxItemsToDrawItems.Cast<Item>().ToList();
4 голосов
/ 25 декабря 2011
List<Item> items = this.ChkLsBxItemsToDraw.Items.Cast<Item>().ToList();
1 голос
/ 25 декабря 2011
public class Item
{
    public List<double> x = new List<double>();
    public List<double> y = new List<double>();
}

static void Main(string[] args)
{
    CheckedListBox box = new CheckedListBox();
    box.Items.OfType<Item>().ToList();
}
...