如何在C#中获取comboBox中的数据

5

我有一个组合框,我是这样填充它的:

DataTable dt = new DataTable();

using (SQLiteConnection conn = connection.Conn)
{               
    using (SQLiteCommand cmd = new SQLiteCommand(conn))
    {
        cmd.CommandText = "select id, description from category";
        conn.Open();

        using (SQLiteDataAdapter da = new SQLiteDataAdapter(cmd))
        {
            da.Fill(dtChargeCodes);
            comboBox1.DataSource = dt;
            comboBox1.DisplayMember = "description";
            comboBox1.ValueMember = "id";
        }                                       
    }               
}

我想要实现的是获取comboBox中选定项的数据,但是当我试图使用MessageBox.Show(comboBox1.SelectedItem.ToString());来显示它时,我得到的是类型System.Data.DataRowView.而不是表category中字段描述的实际值。请帮忙解决...谢谢。
5个回答

6

请使用

comboBox1.SelectedText

或者

((System.Data.DataRowView)(comboBox1.SelectedItem))["description"]

如果您需要在SelectedIndexChanged事件中访问值(请参见此处),则可能需要使用第二种方法。


5

试试这个:

MessageBox.Show(comboBox1.SelectedValue);

这将显示查询“select id, description from category”中的id值,而不是描述... - yonan2236
抱歉,没有仔细阅读问题。通常您需要的是该值。 - Jason Down
尝试一下Patrick McDonald的方法:https://dev59.com/CVnUa4cB1Zd3GeqPZlk3#6733452 - Jason Down

2

我认为您需要

MessageBox.Show(comboBox1.SelectedItem.Value.ToString())

我认为ComboBox.Selected没有Value属性。 - yonan2236
问题在于,我认为你正在获取该项。该项应该有一些属性可以提供给你该值。抱歉 - 我目前没有访问环境进行检查。 - Schroedingers Cat

2

如果你在寻找屏幕数值,请使用以下方法:

MessageBox.Show(combobox1.SelectedText);

注意:如果DropDownStyle设置为DropDownList,则返回值为空字符串(“”)。 - Renatas M.

1
一些解释:
MessageBox.Show(comboBox1.SelectedValue.ToString()); //get selected item value
MessageBox.Show(comboBox1.Text); //get selected item text

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接