当我改变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";

当我改变combobox1时,它也改变了combobox2的值(两者使用相同的List)

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";
相关文章: