0

我的winform上有2个组合框。两个组合框都由下面的列表加载。一切正常。除了,当我更改 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";
4

3 回答 3

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

例子

于 2013-03-27T10:17:32.897 回答
1

_item1通过在构造函数中传递 来创建具有相同项目的新列表。

将新列表分配给第二个组合框。

        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";
于 2013-03-27T10:20:48.173 回答
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 范例。

于 2013-03-27T11:03:52.630 回答