如何通过索引获取下拉框的值?

3

我在我的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个项目的值(例如:第4个项目的值)。我该如何做到这一点?
3个回答

8
您可以使用“Items”属性。该属性的详细信息请参考此处
DataRowView itemAtFourthIndex = combobox.Items[4] as DataRowView;

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

我正在寻找大约2个小时...谢谢 - Eyüp Alemdar

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
我猜,内部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

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