当我改变combobox1时,它也改变了combobox2的值(两者使用相同的List)
本文关键字:改变 List 的值 combobox1 combobox2 | 更新日期: 2023-09-27 18:06:00
我的窗体上有两个组合框。这两个组合框都由下面的列表加载。一切正常。除了,当我改变一个值在Combobox1然后它也改变了在combobox2的值…其他组合框也是一样。当我改变一个值在组合框2它改变在组合框1....
两者必须使用相同的值列表。这就是为什么我只绑定到同一个列表(_item)的原因。
那么我需要做些什么来解耦这两个组合框呢?
IList<CompteGeneral> _item = new List<CompteGeneral>(compt_repository.GetAll);
combobox1.DataSource = _item;
combobox1.DisplayMember = "AccountNumber";
combobox2.DataSource = _item;
combobox2.DisplayMember = "AccountNumber";
在CompteGeneral
上实现ICloneable
接口的Clone方法
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范式。
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";
示例通过在构造函数中传递_item1
来创建一个具有相同项的新List。
将新列表分配给第二个组合框。
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";