相同的字符串列表数据绑定导致ComboBox控件的奇怪行为

时间:2014-07-11 12:10:37

标签: c# .net winforms data-binding

我将两个组合框数据绑定到同一个字符串列表中:

cbo1.DataSource    = niches_list.LIST_niches;
cbo1.DisplayMember = "LIST_niches";             
cbo2.DataSource    = niches_list.LIST_niches;
cbo2.DisplayMember = "LIST_niches";         

这一切都很好,但是当我更改cbo1的选定项目时,cbo2也会改变选择;反之亦然:如果我更改了所选的cbo2项,则所选的cbo1项将更改为相同的索引。为什么是这样?有修复吗?

1 个答案:

答案 0 :(得分:2)

使用BindingSource保持两个组合框货币管理不同

BindingSource bs = new BindingSource();
bs.DataSource = niches_list.LIST_niches
cbo1.DisplayMember = "LIST_niches";             
cbo1.DataSource = bs;

BindingSource bs2 = new BindingSource();
bs2.DataSource = niches_list.LIST_niches;
cbo2.DisplayMember = "LIST_niches";             
cbo2.DataSource = bs2;

BindingSource对象具有许多功能,如类文档的链接中所述。在您的情况下,重要的是currency management意味着它代表其客户端(组合框)处理基础数据源上的当前位置。 BindingSource.Current属性在两个实例之间是不同的,这是保持两个组合框选定项目分开的关键。