2012-11-19 79 views
3

我有3個硬編碼字符串值組合框:如何根據字符串檢查組合框的索引?

A 
B 
C 

如果我嘗試基於SelectedValueSelectedItem,或SelectedText,無論他們的指數更改爲正確的項目來改變當前選擇的值。

目前我正在做這樣的事情:

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

但你可以看到這是一個相當薄弱的解決方案,將打破,如果項目被重新排序,編輯或追加。

有沒有更好的方法?

回答

9

你可以這樣做:

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

,但是這也適用我的電腦上:

comboBox.SelectedItem = "B"; 

必須有你的字符串在下拉框中硬編碼的問題。檢查是否有一些不尋常的字符或白色(空白)字符。

3
List<string> values = new List<string>() { "A", "B", "C" }; 
comboBox.SelectedIndex = values.FindIndex(x => x == str); 
+0

非常感謝你。 – CareTaker22

0

我不知道爲什麼,但是這並不有時效果很好:

comboBox.Items.IndexOf("B"); 

所以我不得不這樣做,而不是:

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

這工作完全正常,尤其是如果我將它綁定到類實體列表,而不僅僅是字符串。

相關問題