我有
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);
这很好用。
我还有一个
组合框
在另一个上定义
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);
当这第二次
组合框
显示,第一个
组合框
,将重置为第一个条目,该条目为空。
如果我在第一个
组合框
,列表仍然存在,它只是“忘记”选择了哪一个。
编辑:我发现在显示第二个
组合框
,第一个的EventHandler
ComboBox1
以某种方式分配给
cmbContractors2Selected
而不是原来的
cmbContractors1Selected