1

comboBox 的DataSource 是一个DataTable。DataTable 有一个键列 ID,ID 的值可以是 1,2,3,4,5。

我想将组合框的 SelectedIndex 设置为与我想要的 ID 相对应。这是我的尝试,它工作正常,但我不确定它是最好的:

DataTable source = (DataTable) myComboBox.DataSource;
DataRow[] rows = source.Select(string.Format("ID='{0}'", 3));//the ID I want is 3
myComboBox.SelectedIndex = rows.Length == 0 ? -1 : source.Rows.IndexOf(rows[0]);

你有其他更好的解决方案吗?

非常感谢!

4

1 回答 1

1

我自己试过,但我不确定它们是否比我在原始问题中发布的更好。他们来了:

  1. 使用Find()方法BindingSource

    //Only 1 line of code, seems to much cleaner :)
    myComboBox.SelectedIndex = new BindingSource(myComboBox.DataSource,"").Find("ID",3);
    //In fact, I thought of this before but I had tried the solution in my OP first.
    
  2. 使用以下FindStringExact()方法的小技巧ComboBox

    string currentDisplayMember = myComboBox.DisplayMember;
    myComboBox.DisplayMember = "ID";
    myComboBox.SelectedIndex = myComboBox.FindStringExact("3");
    myComboBox.DisplayMember = currentDisplayMember;
    

如果你有一些相关的东西要在被触发DisplayMember时处理,那么应该小心使用#2 。SelectedIndexChanged

我希望这对其他人有帮助。如果它们比我在原始问题中使用的方法更好,请在下面留下您的评论。谢谢!

于 2013-05-14T04:59:47.797 回答