对象集合到列表<>并# 39;t工作

本文关键字:工作 集合 列表 对象 | 更新日期: 2023-09-27 18:18:41

我有以下代码将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> ??

对象集合到列表<>并# 39;t工作

DataSource和Items属性是不相关的。你设置了第一个属性并不意味着你会在第二个属性中得到任何东西。例如,如果您检查项目的数量,它将是0:ChkLsBxItemsToDraw.Items.Count .

你可以给Items属性添加元素:

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

,然后将它们作为列表检索回来:

List<Item> items = ChkLsBxItemsToDrawItems.Cast<Item>().ToList();
List<Item> items = this.ChkLsBxItemsToDraw.Items.Cast<Item>().ToList();
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();
}