首页 > 解决方案 > 具有相同数据源的两个 ComboBox 导致选择被遗忘

问题描述

我已经BindingSource定义:

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

然后ComboBoxaDataSource定义如下:

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

ComboBox显示第二个时,第一个ComboBox已选择的内容将重置为第一个条目,该条目为空白。如果我下拉第一个ComboBox,列表仍然存在,它只是“忘记”选择了哪个。

编辑:我发现在显示 2nd 时ComboBox,第一个的 EventHandler 以ComboBox1某种方式被分配给cmbContractors2Selected而不是原来的cmbContractors1Selected

标签: c#winformscomboboxbindingsource

解决方案


尝试给它自己的绑定对象:

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

这将分离货币经理。


推荐阅读