我有一个通用列表,即List<myclass>
。这里myclass
包含两个字符串属性。
如何将数据源分配给列表集合?
答案 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)