如何从组合框的索引中获取其值?

问题描述 投票:0回答:4

我的 C# 表单中有一个组合框。我给它一个这样的数据源

string selectSql = "SELECT ID, NAME FROM MUSTERI";

SqlCommand comm = new SqlCommand(selectSql, conn);
SqlDataReader dr = comm.ExecuteReader();
DataTable dt = new DataTable();

dt.Columns.Add("ID", typeof(string));
dt.Columns.Add("NAME", typeof(string));
dt.Load(dr);

combobox.ValueMember = "ID";
combobox.DisplayMember = "AD";
combobox.DataSource = dt;

我可以使用

Combobox.SelectedValue
获取项目的值(来自数据库的 ID),并使用
Combobox.SelectedText
获取项目的文本(来自数据库的名称),但我需要获取 k 的值。物品(例如:第四件物品的价值)。我怎样才能得到它?

c# combobox
4个回答
8
投票

您可以使用 Items 属性。

DataRowView itemAtFourthIndex = combobox.Items[4] as DataRowView;

int id = -1;
if(itemAtFourthIndex != null)
   id = Convert.ToInt32(itemAtFourthIndex.Row["ID"]);

1
投票

我猜想,ComboBox 在内部使用反射来获取项目的文本。如果您不使用 DataTable 作为数据源,这也应该有效:

Private Function GetText(cb As ComboBox, i As Integer) As String
    Dim src = cb.Items(i)
    Dim txt As String
    Try
        txt = src.GetType.GetProperty(cb.DisplayMember).GetValue(src)
    Catch ex As Exception
        txt = ex.Message
    End Try
    Return txt
End Function

0
投票

也许你可以尝试如下:

combobox.SelectedIndex = k;

可用于获取或设置指定当前所选项目的索引。此外,要取消选择当前选定的项目,请将 SelectedIndex 设置为 -1。

有时,该方法可以使用FindString来搜索指定的项目,msdn中有示例:

private void findButton_Click(object sender, System.EventArgs e) {
    int index = comboBox1.FindString(textBox2.Text);
    comboBox1.SelectedIndex = index;
}

希望有帮助。


0
投票
For Each itm In cboLogin.Items
    MsgBox(CStr(itm.GetType.GetProperty(cboLogin.DisplayMember).GetValue(itm)))
    MsgBox(CStr(itm.GetType.GetProperty(cboLogin.ValueMember).GetValue(itm)))
Next
© www.soinside.com 2019 - 2024. All rights reserved.