我遇到绑定到多个控件的问题。例如,我有不同的控件: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
答案 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/
和