我有一个包含大量用户输入控件的表单;其中大部分是可选的,由于我无法控制的原因,所需的元素分散在表单周围。我被要求添加一个按钮,打开第二个表单(以下称为ChildForm),它与原始表单(以下称为ParentForm)相关联,并且只有ParentForm所需的控件。
我希望ChildForm中的控件链接到与ParentForm中相应控件相同的数据源。我想以编程方式在循环中创建此链接,以便以后对ParentForm的更改不需要手动编辑ChildForm控件的数据绑定。
我尝试了ChildControl.DataBindings.Add(ParentControl.DataBindings[0]);
但是我在运行时遇到了dataBinding belongs to another BindingsCollection
ArgumentException。
如何将新控件绑定到DataTable的同一列作为现有控件,而无需为每个控件手动执行此操作?
答案 0 :(得分:3)
如果您的Binding
很简单(没有注册任何Format
和Parse
事件处理程序),您可以像这样执行浅层克隆:
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]);