【问题标题】:Independent drop down lists with shared data source具有共享数据源的独立下拉列表
【发布时间】:2011-07-13 11:20:14
【问题描述】:

我有绑定列表:

BindingList<string> sampleList = new BindingList<string>();
sampleList.Add("aaa");
sampleList.Add("bbb");

用作两个组合框的数据源:

comboBox1.DataSource = sampleList;
comboBox2.DataSource = sampleList;

当我在其中一个组合框中更改选择时,第二个也会受到影响。我怎样才能让他们保持独立?

编辑:

由于一些“热”的 cmets,我必须做一些澄清:

  • 是 windows 窗体代码
  • 有可能
  • 背后没有其他逻辑/代码
  • 我使用的是 .NET 2.0

完整代码来源:

public partial class Form1 : Form
{
    BindingList<string> sampleList;

    public Form1()
    {
        InitializeComponent();

        sampleList = new BindingList<string>();
        sampleList.Add("aaa");
        sampleList.Add("bbb");

        comboBox1.DataSource = sampleList;
        comboBox2.DataSource = sampleList;
    }
}

【问题讨论】:

  • 这是不可能的,因为 BindingList 没有关于组合框中所选项目的信息。一定有其他事情发生。
  • 能否提供更改所选值的代码?
  • 你会想知道的。如今,人们使用反对票的速度非常快。
  • 我没有投反对票,但我猜是因为缺少很多信息。正如我已经评论过的,OP 所暗示的不是真的,他的问题一定出在他没有显示的代码中。
  • @Daniel Hilgarth,一个合理的评论。我对我的暗示是,人们很快就会在不等待澄清的情况下投反对票。他们期待完美的问题。

标签: c# .net


【解决方案1】:

试试这个

comboBox1.DataSource = sampleList.ToList();
comboBox2.DataSource = sampleList.ToList();

【讨论】:

  • 对不起,那么使用 BindingList 的原因是什么?
  • 是的,谢谢,我知道 ToList() 是什么意思。但是,如果他应该调用 ToList() 并忽略 BindingList 类型,为什么还要使用 BindingList
  • 不幸的是,我无法使用您的解决方案,因为我坚持使用 .NET 2.0,而 ToList() 方法可从 .NET 3.5 获得;-/
  • @Steen 它将从样本列表中创建一个单独的列表
  • 是的。确切地。为什么要使用 BindingList 呢?如果这是您的解决方案,为什么不简单地创建一个 List 并克隆它?
【解决方案2】:

使用 2 个单独的数据源。在这种特殊情况下,每个组合 2 个不同的 BindingList 实例可能是最好的解决方案,尤其是在我们讨论相当小的列表时。

如果我没记错的话,每个表单都有默认关联的BindingSource,实际上,它管理引用同一集合的“链接”控件。但老实说,我对此不太确定。

问候。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-13
    • 2012-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-19
    • 2014-05-02
    • 1970-01-01
    相关资源
    最近更新 更多