我正在试验和学习Windows窗体应用程序,无法确定绑定结构。 根据MSDN文档:-您可以为数据源指定以下任何类的实例:
数据集
数据表
DataView
DataViewManager
BindingSource
因此,我有一个简单的代码来了解此构造。
我已经用列表框listBox1和DataTable data_table初始化了一个简单的Windows窗体。
static DataTable data_table = new DataTable("ParentTable");
DataColumn column;
DataRow row;
column = new DataColumn();
column.DataType = System.Type.GetType("System.Int32");
column.ColumnName = "id";
column.ReadOnly = false;
column.Unique = true;
// Add the Column to the DataColumnCollection.
data_table.Columns.Add(column);
for (int i = 0; i <= 2; i++)
{
row = data_table.NewRow();
row["id"] = i;
data_table.Rows.Add(row);
}
可以直接绑定到DataSource。
listBox1.DataSource=new BindingSource(data_table , null);
listBox1.ValueMemeber="id";
但是当我使用以下内容
Binding myBinding = new Binding("DataSource", data_table, "id");
form_m.listBox1.DataBindings.Add(myBinding);
我遇到异常
System.ArgumentException:复杂的DataBinding接受作为数据源 IList或IListSource
如果有人可以帮助我,我将非常感谢。
答案 0 :(得分:1)
您正在使用带有三个参数Binding(String, Object, String)的构造函数重载
参数在哪里
propertyName
-要绑定的控件属性的名称。
-DataSource
您的情况
数据源
-代表数据源的对象。
-这是主要数据源,请注意,它不是将绑定到List.Box.DataSource
dataMember
-要绑定的属性或列表。
-这是主数据源中属性的名称,该值将绑定到控件的DataSource
。该值应该是IList或IListSource
您可以设置ListBox.DataSource
,而无需任何额外的约束
listBox.DataSource = myDataTable;
检查链接:Windows Forms Data Binding
应该有足够的有关如何使用数据绑定的信息,并且如果您通过示例进行操作,您将很好地了解如何根据需要使用数据绑定。
答案 1 :(得分:0)
您不需要任何额外的绑定。 您可以将 List,Array,Tables 分配给 DataSource ,还可以在使用List of of时提供 DisplayMember 和 ValueMember 。对象或表作为数据源,如果您使用一维数组,则无需提供 DisplayMember 和 ValueMember 。
listbox1.DataSource = data_table;
listbox1.ValueMember = "id";
listbox1.DisplayMember = "id";