C#绑定到多个控件 - >每个控件的选择都会改变

时间:2017-02-18 11:30:08

标签: c# binding controls

我遇到绑定到多个控件的问题。例如,我有不同的控件:1个列表框,2个组合框,1个datagridview,所有这些控件都绑定到同一个列表或iobservablecollection(除了datagridview显示相同的属性)。一切正常。但是,如果我更改了一个控件的选择,则所有其他控件的选择将更改为相同的项目。或者换句话说,如果我将组合框的选择更改为项目编号5,另一个组合框也将其选择更改为编号5,并且列表框也将其选择更改为项目编号5.是否有人知道如何避免这种情况?

编辑: 以下是导致相同行为的示例代码:

private List TestList;

    private void Form1_Load(object sender, EventArgs e)
    {
        TestList = new List<foo>();
        for (int i = 0; i <= 5; i++)
        {
            foo f = new foo();
            f.test = "Test_" + i;
            TestList.Add(f);
        }
        comboBox1.DataSource = TestList;
        comboBox1.DisplayMember = "test";
        comboBox2.DataSource = TestList;
        comboBox2.DisplayMember = "test";
    }

    class foo
    {
        private string _test;
        public string test
        {
            get
            {
                return _test;
            }
            set
            {
                _test = value;
            }
        }
    }

如果我更改了combobox1的ite,则combobox2项会自动更改为同一项。

图片:1

2 个答案:

答案 0 :(得分:0)

我希望看到您的控件,但两者都是您的数据源  comboBox1.DataSource = TestList;和comboBox2.DataSource = TestList;是相同的。因此,当你改变一个东西时,它会影响另一个。

答案 1 :(得分:0)

我发现至少有一个不显示此行为的临时解决方案。

来自:

combobox1.DataSource = TestList;

为:

combobox1.DataSource = Testlist.ToList();

对于所有遇到同样问题的人,请查看以下链接: https://blogs.msdn.microsoft.com/bethmassi/2007/09/19/binding-multiple-combo-boxes-to-the-same-data-source/

One DataSource for multiple controls