C# &引用;System.Data.DataRowView“;在C中使用combobox进行表单加载#
每次我的表单加载/打开时,它都会提示“System.Data.DataRowView”,我如何才能删除它 这是我的密码:C# &引用;System.Data.DataRowView“;在C中使用combobox进行表单加载#,c#,winforms,C#,Winforms,每次我的表单加载/打开时,它都会提示“System.Data.DataRowView”,我如何才能删除它 这是我的密码: { InitializeComponent(); GetProcessorCardTypes(); } private void GetProcessorCardTypes() { cn.Open(); MySqlCommand cmd = new MySqlCommand("
{
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我认为您应该将您的评论作为答案发布