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

时间:2013-03-27 10:12:40

标签: c# winforms

我的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";

3 个答案:

答案 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";

example

答案 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范例。