5

我有一个带有 3 个硬编码字符串值的 ComboBox:

A
B
C

如果我尝试根据SelectedValueSelectedItemSelectedText都不会将索引更改为正确的项目。

目前我正在做类似的事情:

switch (str)
{
    case 'A':
        comboBox.SelectedIndex = 0;
        break;
    case 'B':
        comboBox.SelectedIndex = 1;
        break;
    case 'C':
        comboBox.SelectedIndex = 2;
        break;
}

但正如您所看到的,这是一个相当薄弱的解决方案,如果项目被重新排序、编辑或附加,它就会中断。

还有更好的方法吗?

4

3 回答 3

11

你可以这样做:

comboBox.SelectedIndex = comboBox.Items.IndexOf("B");

但这也适用于我的电脑:

comboBox.SelectedItem = "B";

在组合框中硬编码的字符串一定有问题。检查是否有一些异常字符或白色(空白)字符。

于 2012-11-19T18:28:22.297 回答
3
 List<string> values = new List<string>() { "A", "B", "C" };
 comboBox.SelectedIndex = values.FindIndex(x => x == str);
于 2012-11-19T18:29:09.660 回答
0

我不知道为什么,但这有时效果不佳:

comboBox.Items.IndexOf("B");

所以我不得不这样做:

comboBox.SelectedIndex = comboBox.FindStringExact("B"); 

效果很好,特别是如果我将它绑定到类实体列表而不仅仅是字符串。

于 2017-09-22T09:16:59.500 回答