C# &引用;System.Data.DataRowView“;在C中使用combobox进行表单加载#

C# &引用;System.Data.DataRowView“;在C中使用combobox进行表单加载#,c#,winforms,C#,Winforms,每次我的表单加载/打开时,它都会提示“System.Data.DataRowView”,我如何才能删除它 这是我的密码: { InitializeComponent(); GetProcessorCardTypes(); } private void GetProcessorCardTypes() { cn.Open(); MySqlCommand cmd = new MySqlCommand("

每次我的表单加载/打开时,它都会提示“System.Data.DataRowView”,我如何才能删除它

这是我的密码:

    {
        InitializeComponent();
        GetProcessorCardTypes();
    }

    private void GetProcessorCardTypes()
    {
        cn.Open();

        MySqlCommand cmd = new MySqlCommand("call GetProcessorMethod(1)", cn);
        MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
        DataTable dt = new DataTable();
        adapter.Fill(dt);

        cmbProcessorMethods.DataSource = dt;
        cmbProcessorMethods.ValueMember = "method_id";
        cmbProcessorMethods.DisplayMember = "method_name";
    }

    private void cmbProcessorMethods_SelectedIndexChanged(object sender, EventArgs e)
    {
        MessageBox.Show(cmbProcessorMethods.SelectedValue.ToString());
    }

如果要完全删除消息框,请删除
cmbProcessorMethods\u SelectedIndexChanged
事件处理程序。或者您可以将其更改为显示所选行的
方法\u名称

private void cmbProcessorMethods_SelectedIndexChanged(object sender, EventArgs e)
{
     DataRowView row = (DataRowView)cmbProcessorMethods.SelectedItem;
     MessageBox.Show(row["method_name"].ToString());
}

正如Derek所指出的,在分配数据源之前,只需设置
DisplayMember
ValueMember
属性,您的原始代码即可工作:

cmbProcessorMethods.ValueMember = "method_id";
cmbProcessorMethods.DisplayMember = "method_name";
cmbProcessorMethods.DataSource = dt;

但是我希望每次更改ComboBox的索引时都在messagebox中显示valuemember这听起来很愚蠢,但是在设置valuemember&Displaymember之后,最后添加数据源。我想我以前也有过这种情况。您还需要关闭连接。@GrayFullBuster然后使用
行[“method\u id”]。ToString()
@Derek我认为您应该将您的评论作为答案发布