【问题标题】:How to check index of combobox based on string?如何根据字符串检查组合框的索引?
【发布时间】:2012-11-07 17:27:25
【问题描述】:

我有一个包含 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;
}

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

还有更好的方法吗?

【问题讨论】:

    标签: c# combobox indexing


    【解决方案1】:

    你可以这样做:

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

    但这也适用于我的电脑:

    comboBox.SelectedItem = "B";
    

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

    【讨论】:

      【解决方案2】:
       List<string> values = new List<string>() { "A", "B", "C" };
       comboBox.SelectedIndex = values.FindIndex(x => x == str);
      

      【讨论】:

        【解决方案3】:

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

        comboBox.Items.IndexOf("B");
        

        所以我不得不这样做:

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

        效果非常好,尤其是当我将它绑定到类实体列表而不仅仅是字符串时。

        【讨论】:

          猜你喜欢
          • 2023-03-31
          • 1970-01-01
          • 2015-05-08
          • 2021-11-07
          • 1970-01-01
          • 2018-11-06
          • 2014-04-22
          • 2016-08-28
          • 1970-01-01
          相关资源
          最近更新 更多