奇怪的两个控件/相同的数据源问题

时间:2009-06-17 15:22:42

标签: winforms datasource

这是使用winforms。

我有一个列表框和一个组合框,它们都绑定到相同的数据源,相同的显示成员,相同的值成员。所有都绑定得很好,项目都出现在两个控件中。

问题是当我在一个控件中更改选择时,它会移动到另一个控件中的相同索引。我没有任何事件与这两种控制相关联。它正好发生在自己身上。有没有人碰到这个?

3 个答案:

答案 0 :(得分:3)

这是因为两个控件共享相同的BindingContext/CurrencyManager。控件从其容器控件继承BindingContext。 BindingContext每个DataSource只维护一个CurrencyManager。如果你想拥有两个不同的CurrencyManagers,你需要有两个BindingContexts。

因此,一旦更改了控件选择,currencyManagaer.Current就会更新。这会影响共享同一数据源的所有控件。

实例化一个新的BindingContext并将其分配给其中一个ComboBox的BindingContext属性:

comboBox2.BindingContext = new BindingContext();

这应该可以解决问题。

答案 1 :(得分:2)

数据源是一个单独的对象。当其中一个控件更改数据源活动行时,它会向其他控件发送更新通知以相应地移动。这是正常和预期的行为。

它背后的想法是简化导航记录集,同时保持所有绑定控件同步。

如果您不想这样做,请使用绑定到相同基础数据的两个数据源。

答案 2 :(得分:0)

我认为这可能是一个功能。对于主/明细类型表格。