如何将数据绑定从一个控件复制到另一个控件?

时间:2013-09-06 16:46:23

标签: c# winforms data-binding

我有一个包含大量用户输入控件的表单;其中大部分是可选的,由于我无法控制的原因,所需的元素分散在表单周围。我被要求添加一个按钮,打开第二个表单(以下称为ChildForm),它与原始表单(以下称为ParentForm)相关联,并且只有ParentForm所需的控件。

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

我尝试了ChildControl.DataBindings.Add(ParentControl.DataBindings[0]);但是我在运行时遇到了dataBinding belongs to another BindingsCollection ArgumentException。

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

1 个答案:

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