代码之家  ›  专栏  ›  技术社区  ›  Al Lelopath

具有相同数据源的两个组合框会导致忘记选择

  •  1
  • Al Lelopath  · 技术社区  · 6 年前

    我有 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

    1 回复  |  直到 6 年前
        1
  •  1
  •   LarsTech    6 年前

    尝试为其提供自己的绑定对象:

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

    这将分离货币管理者。