【发布时间】:2012-05-22 08:58:46
【问题描述】:
我正在创建一个将充当主从编辑器的表单。我在这个表单上有 2 个控件。一个基本上是主项目列表,另一个控件是项目的详细信息。我试图在两个控件中使用相同的 BindingSource 对象,以便在主控件上进行更改时,将更新详细控件。
在我的表格中,我有:
EmployerCollection employerCollection = new EmployerCollection();
employerCollection.GetMulti(null, 0, new SortExpression(EmployerFields.Name | SortOperator.Ascending));
bsEmployers.DataSource = employerCollection;
masterControl.Init(bsEmployers);
detailControl.Init(bsEmpoyers);
在我的 masterControl 我有:
public void Init(BindingSource bs)
{
bsEmployers = bs;
}
但是,当我以这种方式传递绑定源时,我无法让我的主控件显示绑定源中的数据。
只有删除 bsEmployers = bs 行并按如下方式移动其他逻辑才能使绑定工作:
public void Init(BindingSource bs)
{
EmployerCollection employerCollection = new EmployerCollection();
employerCollection.GetMulti(null, 0, new SortExpression(EmployerFields.Name | SortOperator.Ascending));
bsEmployers.DataSource = employerCollection;
}
有谁知道我不能传递 BindingSource 对象来共享它吗?我尝试在我的控件中调用 RefreshBindings,但它似乎没有任何效果。
谢谢。
【问题讨论】:
-
当你分配 bsEmployers = bs;您覆盖了绑定源的引用,但您的所有控件仍绑定到旧的 bsEmployers。尝试从表单设计器中删除您的绑定源并以编程方式创建它并将其分配给正在使用它的所有子控件。您也可以尝试调用 bsEmployers.DataSource = bs.DataSource;
标签: c# winforms data-binding