【问题标题】:Weird two controls / same datasource problem奇怪的两个控件/相同的数据源问题
【发布时间】:2010-11-03 17:04:52
【问题描述】:

这是使用winforms。

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

问题是当我在一个控件中更改选择时,它会移动到另一个控件中的相同索引。我没有与任何一个控件相关的任何事件。它只是在自己发生。有没有人遇到过这个?

【问题讨论】:

    标签: winforms datasource


    【解决方案1】:

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

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

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

    comboBox2.BindingContext = new BindingContext();

    这应该可以解决问题。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-04-14
          • 1970-01-01
          • 2019-09-09
          • 1970-01-01
          • 1970-01-01
          • 2012-04-24
          • 1970-01-01
          • 2019-05-25
          相关资源
          最近更新 更多