5

3つのハードコードされた文字列値を持つComboBoxがあります。

A
B
C

SelectedValue、、、SelectedItemまたはに基づいて現在選択されている値を変更しようとするとSelectedText、どちらもインデックスを適切な項目に変更しません。

現在、私は次のようなことをしています。

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 に答える