【问题标题】:Object Collection to List<> doesn't workList<> 的对象集合不起作用
【发布时间】:2011-12-25 08:52:25
【问题描述】:

我有此代码用于将CheckedListBox.Items 转换为List&lt;Item&gt;

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&lt;Item&gt;

我得到了这个错误:

错误 1 ​​无法通过引用转换、装箱转换、拆箱转换、包装转换或空类型转换将类型“System.Windows.Forms.CheckedListBox.ObjectCollection”转换为“System.Collections.Generic.List&lt;Drower.Item&gt;

我怎样才能将CheckedListBox.Items 设为List&lt;Item&gt; ???

【问题讨论】:

  • 出了什么问题?错误是什么?

标签: c# .net c#-4.0


【解决方案1】:

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

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

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

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

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

【讨论】:

  • @ahmadalishafiee,您可以使用.Add 方法将元素添加到Items 属性:ChkLsBxItemsToDraw.Items.Add(someItem) 或使用.AddRange 方法的一系列项目。
  • @ahmadalishafiee 这取决于您在更高层次的视角中想要什么。试着解释你的用例,而不是你的代码问题。你想让你的程序做什么?更新您的问题。
【解决方案2】:
List<Item> items = this.ChkLsBxItemsToDraw.Items.Cast<Item>().ToList();

【讨论】:

    【解决方案3】:
    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();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-19
      • 2020-02-29
      • 1970-01-01
      • 1970-01-01
      • 2011-12-04
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多