我的winform上有2个组合框。两个组合框都由下面的列表加载。一切正常。除此之外,当我在Combobox1中更改一个值时,它也会改变combobox2中的值......对于其他组合框也是如此。当我在组合框2中更改一个值时,它会在combobox1中发生变化....
两者都必须使用相同的值列表。所以这就是为什么我只是绑定到同一个列表(_item)。
那么我需要做些什么才能将2个组合框彼此分离?
IList<CompteGeneral> _item = new List<CompteGeneral>(compt_repository.GetAll);
combobox1.DataSource = _item;
combobox1.DisplayMember = "AccountNumber";
combobox2.DataSource = _item;
combobox2.DisplayMember = "AccountNumber";
答案 0 :(得分:1)
IList<CompteGeneral> _item = new List<CompteGeneral>(compt_repository.GetAll);
IList<CompteGeneral> _item1 = new List<CompteGeneral>(compt_repository.GetAll);
combobox1.DataSource = _item;
combobox1.DisplayMember = "AccountNumber";
combobox2.DataSource = _item1;
combobox2.DisplayMember = "AccountNumber";
或
IList<CompteGeneral> _item = new List<CompteGeneral>(compt_repository.GetAll);
BindingSource source=new BindingSource();
source.DataSource=_item ;
BindingSource source1=new BindingSource();
source1.DataSource=_item ;
combobox1.DataSource = source;
combobox1.DisplayMember = "AccountNumber";
combobox2.DataSource = source1;
combobox2.DisplayMember = "AccountNumber";
答案 1 :(得分:1)
通过在构造函数中传递_item1
来创建具有相同项目的新List。
将新列表分配给第二个Combobox。
IList<CompteGeneral> _item1 = new List<CompteGeneral>(compt_repository.GetAll);
IList<CompteGeneral> _item2 = new List<CompteGeneral>(_item1);
combobox1.DataSource = _item1;
combobox1.DisplayMember = "AccountNumber";
combobox2.DataSource = _item2;
combobox2.DisplayMember = "AccountNumber";
答案 2 :(得分:1)
从ICloneable
CompteGeneral
界面实施克隆方法
IList<CompteGeneral> _item = new List<CompteGeneral>(compt_repository.GetAll);
combobox1.DataSource = _item;
combobox1.DisplayMember = "AccountNumber";
combobox2.DataSource = _item.Select(p => p.Clone()).ToList();
combobox2.DisplayMember = "AccountNumber";
在克隆对象时也搜索ShallowCopy和DeepCopy范例。