У меня есть 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