对象集合到列表<>不起作用

时间:2011-12-25 08:52:26

标签: c# .net c#-4.0

我有这个代码用于将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 个答案:

答案 0 :(得分:14)

DataSourceItems属性不相关。您设置第一个属性的事实并不意味着您将在第二个属性中获得任何内容。例如,如果您检查项目数为0:ChkLsBxItemsToDraw.Items.Count

您可以向Items属性添加元素:

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

然后将其作为列表检索回来:

List<Item> items = ChkLsBxItemsToDrawItems.Cast<Item>().ToList();

答案 1 :(得分:4)

List<Item> items = this.ChkLsBxItemsToDraw.Items.Cast<Item>().ToList();

答案 2 :(得分:1)

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();
}