C# 在数据绑定组合框中选择项

C# 在数据绑定组合框中选择项,c#,combobox,databound,C#,Combobox,Databound,我相信这个问题是个新问题,但我不能用正确的方法解决它 简要说明: 我有一个继承自ComboBox的类,该类在构造函数中执行一些数据绑定: var mdl=新模型(); ValueMember=“id”; DisplayMember=“单位”; DataSource=mdl.getUnits(); 这里一切都好。组合框由所需数据填充 然后我有另一个带有函数editingrident的表单。功能如下 公共布尔编辑区(内部id) { currentId=id; var row=mdl.getIngri

我相信这个问题是个新问题,但我不能用正确的方法解决它

简要说明:

  • 我有一个继承自ComboBox的类,该类在构造函数中执行一些数据绑定:
  • var mdl=新模型(); ValueMember=“id”; DisplayMember=“单位”; DataSource=mdl.getUnits(); 这里一切都好。组合框由所需数据填充

  • 然后我有另一个带有函数editingrident的表单。功能如下 公共布尔编辑区(内部id) { currentId=id; var row=mdl.getIngridient(id); Text=(字符串)行[“ingridient”]; cmbUnit.ID=(int)行[“unitId”]; numNotifyQty.Value=(int)行[“notifyQty”]; ShowDialog(); 返回true; }
  • 现在,当表单弹出时,文本框和数字框由所需的值填充,而组合框由第一个值填充

  • 如果我将combobox数据绑定函数作为EditingRident函数的第一行运行,那么一切都很好

  • 请指出我的愚蠢


    非常感谢

    您没有说什么是数据源,但我假设这是DataTable,所以您可以这样做:

    DataRowView rowData = comboBox1.SelectedItem as DataRowView;
    int id = Convert.ToInt32(rowData["id"]);
    string name = rowData["unit"].ToString();
    

    使用编辑器中的“代码”按钮概述问题中的代码。这样会得到更多的响应
    Show()
    txtIngridient.Text=(字符串)行[“ingridient”]
    cmbUnit.ID=(int)行[“unitId”]
    numNotifyQty.Value=(int)行[“notifyQty”]有效。另一个更新。如果我将在unitId、ingridient和notifyQty的editIngridient函数中设置私有变量,并且在事件形式_Load中,我将通过在editIngridient中设置的私有变量分配控件值-所有工作正常。那个么,为什么我不能在EditingRident函数中直接分配控件(组合框)值呢?我相信你们搞错了。我需要在数据绑定组合框中选择一项。组合框由DataTable中的行填充。这很有效。问题是,当我打开此组合框所在的表单时,在运行ShowDialog之前,我设置了文本框和此组合框的值。设置文本框的值。但当我运行combobox.SelectedValue=3并显示表单时,combobox选择了第一个值。
    public bool editIngridient(int id)
        {
        currentId = id;
    
        var row = mdl.getIngridient(id);
    
        txtIngridient.Text = (string)row["ingridient"];
        cmbUnit.ID = (int)row["unitId"];
        numNotifyQty.Value = (int) row["notifyQty"];
    
        ShowDialog();
    
        return true;
        }
    
    DataRowView rowData = comboBox1.SelectedItem as DataRowView;
    int id = Convert.ToInt32(rowData["id"]);
    string name = rowData["unit"].ToString();