0

我有一个包含很多用户输入控件的表单;其中大多数是可选的,并且由于我无法控制的原因,所需的元素分散在表单周围。我被要求添加一个按钮,该按钮打开第二个表单(以下称为 ChildForm),该表单链接到原始表单(以下称为 ParentForm),并且仅具有 ParentForm 所需的控件。

我希望 ChildForm 中的控件与 ParentForm 中的相应控件链接到相同的数据源。我想在循环中以编程方式创建此链接,以便以后对 ParentForm 的更改不需要手动编辑 ChildForm 控件的数据绑定。

我试过ChildControl.DataBindings.Add(ParentControl.DataBindings[0]);了,但在运行时我得到了一个dataBinding belongs to another BindingsCollectionArgumentException。

如何将新控件与现有控件绑定到 DataTable 的同一列,而无需为每个控件手动执行此操作?

4

1 回答 1

3

如果您Binding很简单(没有注册任何事件处理程序) FormatParse您可以像这样进行浅克隆:

public void CloneBinding(Control control, Binding bind){
   Binding bind = new Binding(bind.PropertyName, bind.DataSource, bind.BindingMemberInfo.BindingMember);
   control.DataBindings.Add(bind);
}
//Use it
CloneBinding(ChildControl, ParentControl.DataBindings[0]);
于 2013-09-06T16:56:03.563 回答