Два ComboBox с одним и тем же источником данных приводят к тому, что выбор будет забыт - PullRequest
0 голосов
/ 08 мая 2018

У меня есть BindingSource определено:

public System.Windows.Forms.BindingSource bsContractors;
this.bsContractors.DataSource = typeof(Contractor);

, а затем ComboBox с DataSource, определенным так:

private System.Windows.Forms.ComboBox cmbConstructionContractors1;
this.cmbConstructionContractors1.DataBindings.Add(new System.Windows.Forms.Binding("SelectedValue", this.bsProject, "Id", true));
this.cmbContractors1.DataSource = this.bsContractors;
this.cmbContractors1.DisplayMember = "Name";
this.cmbContractors1.ValueMember = "Id";
this.cmbContractors1.SelectedIndexChanged += new System.EventHandler(this.cmbContractor1Selected);

Это отлично работает. У меня есть другой ComboBox, определенный на другом Form с использованием того же источника данных:

this.cmbContractorName2.DataBindings.Add(new System.Windows.Forms.Binding("SelectedValue", myView.bsProject, "Id", true));
this.cmbContractorName2.DataSource = projectView.bsContractors;
this.cmbContractorName2.ValueMember = "Id";
this.cmbContractorName2.DisplayMember = "Name";
this.cmbContractorName2.SelectedIndexChanged += new System.EventHandler(this.cmbContractor2Selected);

Когда отображается этот 2-й ComboBox, первый ComboBox, в котором что-то выбрано, сбрасывается до первой записи, которая является пустой. Если я нажму на первый ComboBox, список все еще там, он просто «забыл», какой был выбран.

Редактировать: я обнаружил, что при отображении 2-го ComboBox EventHandler 1-го ComboBox1 каким-то образом присваивается cmbContractors2Selected вместо исходного cmbContractors1Selected

1 Ответ

0 голосов
/ 08 мая 2018

Попробуйте дать ему свой собственный объект привязки:

this.cmbContractorName2.DataSource = new BindingSource(projectView.bsContractors, null);

Это разделит валютных менеджеров.

...