如何将数据源分配给一个通用列表集合?

6

我有一个通用列表,即 List<myclass>。这里的myclass包含两个字符串属性。

如何将数据源分配给列表集合?

6个回答

12

Mirmal,我猜你的母语不是英语,这个问题不太清楚。 我想你问的是,如果有一个班级列表,如何将该列表绑定到某些东西(例如列表框或组合框)中。

以下是一个简单的代码片段,展示了如何实现...

private void button2_Click(object sender, EventArgs e)
{
  List<MyClass> list = new List<MyClass>();
  list.Add(new MyClass() { FirstName = "Tim", Lastname = "Jarvis"});
  list.Add(new MyClass() { FirstName = "John", Lastname = "Doe" });

  listBox1.DataSource = list;
  listBox1.DisplayMember = "FirstName"; // or override MyClass's ToString() method.
}

我希望这回答了你的问题。


4

从一个简单的类开始:

    // create a dummy class
    public class MyClass
    {
        private string name;
        public MyClass(string name)
        {
            ItemName = name;
        }
        public string ItemName
        {
            get { return name; }
            set { name = value; }
        }
    }

创建一个绑定列表,并向该列表添加一些类:
    // create a binding list
    BindingList<MyClass> my_list = new BindingList<MyClass>();

    // add some clssses to the list
    my_list.Add(new MyClass("Item #1"));
    my_list.Add(new MyClass("Item #2"));

将列表绑定到列表框数据源,指示在列表框显示中要使用哪个类属性:
    // make the list the datasource for a listbox
    listBox1.DataSource = my_list;

    // this is the property of the class displayed in the listbox
    listBox1.DisplayMember = "ItemName";

2
您可以将列表包装到绑定列表中:
System.ComponentModel.BindingList<myClass> bindingList = new System.ComponentModel.BindingList<myClass>(originalList);

高兰

1

不行。因为List不是IBindableComponent。而Windows Forms是:请参阅MSDN Control Class


1

您没有为 List<> 对象分配数据源。但是,您可以将 List<> 用作用户界面控件的数据源。

如果您想要实现数据绑定到列表,可以从 List<> 派生并实现 IBindableComponent 接口。但这几乎肯定不是实现您想要完成的功能的最佳方法。

编辑:如果您有一个控件,并且想要检索数据源,并且知道它是一个 List<> 对象,则可以执行以下操作:

List<MyClass> lst = listBox1.DataSource as List<MyClass>;

0
你搞反了。数据绑定对象,如网格等,可以将通用列表设置为它们的数据源。
你必须手动填充列表或使用自动填充技术(例如LINQ to SQL、NHibernate)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接