gpt4 book ai didi

c# - 将多个 ComboBox 绑定(bind)到单个列表 - 问题 : When I select an item, 所有组合框更改

转载 作者:行者123 更新时间:2023-11-30 14:08:17 25 4
gpt4 key购买 nike

我正在动态创建一个 ComboBox 数组,所有 ComboBoxDataSource 是一个包含一些整数的整数列表。但是,当我在任何一个组合框中更改值 X 时,所有其他组合值都会重置为值 X。

情况是这样的:

  • 所有组合框控件都绑定(bind)到一个列表
  • 当我更改组合框的选定项时,所有其他组合框控件的选定项也会更改。

我怎样才能阻止这些行为?

最佳答案

由于您将所有组合框绑定(bind)到相同的数据源 - 单个列表 - 它们使用单​​个 BindingManagerBase .

因此,当您从其中一个组合框中选择一项时,当前的 Position 共享绑定(bind)管理器基础的更改,所有组合框都转到其共享数据源的那个位置。

要解决这个问题,您可以将它们绑定(bind)到不同的数据源:

  • 您可以将它们绑定(bind)到 yourList.ToList()或任何其他列表,例如不同的 BindingList<T> .

    combo1.DataSource = yourList.ToList();
    combo2.DataSource = yourList.ToList();
  • 您可以使用不同的 BindingSource为他们并将您的列表设置为DataSource绑定(bind)源

    combo1.DataSource = new BindingSource { DataSource= yourList};
    combo2.DataSource = new BindingSource { DataSource= yourList};

另一种选择:

  • 您可以使用不同的 BindingContext 为您的组合框。这样即使您将它们绑定(bind)到一个列表,它们也不再同步。

    combo1.BindingContext = new BindingContext();
    combo1.DataSource = yourList;
    combo2.BindingContext = new BindingContext();
    combo2.DataSource = yourList;

事实上,表单的所有控件都使用一个共享的BindingContext。 .当您将 2 个控件绑定(bind)到同一个数据源时,它们也使用相同的 BindingManagerBase这样,当您例如移动到下一条记录时,所有控件都会移动到下一条记录并显示来自下一条记录的绑定(bind)属性的值。这与您从组合框中看到的行为相同。同步使用相同的控件 BindingManagerBase是一种期望的行为。无论如何,有时我们不需要这样的行为。帖子分享了原因和解决方案。

关于c# - 将多个 ComboBox 绑定(bind)到单个列表 - 问题 : When I select an item, 所有组合框更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35864906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com