在两个控件之间共享绑定源不起作用

时间:2012-05-14 20:43:00

标签: c# winforms data-binding

我正在创建一个充当主细节编辑器的表单。我在这个表单上有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,但它似乎没有任何效果。

感谢。

1 个答案:

答案 0 :(得分:0)

我认为BindingSource并不打算以这种方式使用。我建议将EmployerCollection值传递给Init方法,并让每个控件使用EmployerCollection创建自己的BindingSource。