У меня 2 combobox на моей winform. Оба списка со списком загружаются в списке ниже. Все работает нормально. Кроме того, когда я изменяю значение в Combobox1, оно также меняет значение в combobox2… и то же самое для других combobox. Когда я изменяю значение в combobox 2, он изменяется в combobox1….
Оба должны использовать один и тот же список значений. так что причина, по которой я просто привязываюсь к тому же списку (_item).
так что мне нужно сделать, чтобы отделить 2 combobox друг от друга?
IList<CompteGeneral> _item = new List<CompteGeneral>(compt_repository.GetAll);
combobox1.DataSource = _item;
combobox1.DisplayMember = "AccountNumber";
combobox2.DataSource = _item;
combobox2.DisplayMember = "AccountNumber";
реализовать метод Clone из интерфейса 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 при клонировании объектов.
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
в конструкторе.
Назначьте новый список второму 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";