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

时间:2008-09-29 06:25:19

标签: .net

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

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

6 个答案:

答案 0 :(得分:11)

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.
}

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

答案 1 :(得分: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"));

将列表绑定到listbox数据源,指示要在列表框显示中使用哪个类属性:

    // 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 :(得分:2)

您可以将列表包装到绑定列表中:

System.ComponentModel.BindingList<myClass> bindingList = new System.ComponentModel.BindingList<myClass>(originalList);

戈兰

答案 3 :(得分:1)

你做不到。那是因为List不是IBindableComponent。 Windows窗体是:请参阅MSDN Control Class

答案 4 :(得分:1)

您不会将数据源分配给List<>对象。您可以使用List<>作为用户界面控件的数据源。

如果你想让你可以从List<>派生并实现IBindableComponent,这将允许你提供数据绑定到列表的机制。这几乎肯定不是实现你想做的最佳方式。

编辑:如果您有一个控件并且想要检索数据源,并且您知道它是一个List<>对象,您可以这样做:

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

答案 5 :(得分:0)

你反过来了。像网格之类的数据绑定对象可以将通用列表设置为它们的数据源。

您必须手动填充列表或使用为您填充它的技术(例如,LINQ to SQL,NHibernate)