0

以下のコードに示すものと同様の効果を持つ switch ステートメントを作成しようとしていますが、(明らかに) 機能していません。両方のコンボ ボックスで同時に何かを選択することはできません。これを達成する方法について何か考えはありますか?古いプログラムを更新していますが、コードの大部分を書き直さないようにしています。

    switch ((cboMAIN.SelectedIndex) || (cboMAINalternate.SelectedIndex))
            {
                case 0:
                    OutputString1 = "A";
                    break;
                case 1:
                    OutputString1 = "C";
                    break;
                case 2:
                    OutputString1 = "E";
                    break;
                case 3:
                    OutputString1 = "F";
                    break;
                case 4:
                    OutputString1 = "I";
                    break;
                case 5:
                    OutputString1 = "J";
                    break;
                case 6:
                    OutputString1 = "K";
                    break;
            }
4

5 に答える 5

2

使ってみて

switch ((cboMAIN.SelectedIndex > -1) ? cboMAIN.SelectedIndex : cboMAINalternate.SelectedIndex) 
{
于 2012-06-12T21:04:13.953 に答える
1

いいえ、それは不可能です (少なくとも、あなたがやっている方法ではありません)。

問題は、何を達成しようとしているのかということです。両方のインデックスを切り替えるトグルがある場合は、次のようにすることができます。

bool useAlternative = ...;
switch(useAlternative ? cboMAINalternate.SelectedIndex : cboMAIN.Selectedindex) {
    // ...
}
于 2012-06-12T21:04:47.783 に答える
0

select要素には常に選択されたアイテムがあるため、最初のアイテムなど、選択されていないと見なされるアイテムを確認する必要があります。

var item = cboMAIN.SelectedIndex;
if (item = 0) item = cboMAINalternate.SelectedIndex;

switch (item) {
  ...
于 2012-06-12T21:09:02.500 に答える
0

おそらく最も簡潔な方法:

switch (Math.Max(cboMAIN.SelectedIndex, cboMAINalternate.SelectedIndex))
{
    // ...
}
于 2012-06-12T21:11:28.403 に答える
0

MSDNによると、 で選択が空の場合SelectedIndexに返されます。-1ComboBox

次のコードは、選択のあるComboBoxを選択して switch ステートメントを通過するか、どちらも選択されていない場合は失敗します。

ComboBox comboBoxToUse;

if (cboMAIN.SelectedIndex > -1)
{
    comboBoxToUse = cboMAIN;
}
else if (cboMAINalternate.SelectedIndex > -1)
{
    comboBoxToUse = cboMAINalternate;
}
else
{
    throw new InvalidOperationException("Neither combo box contains a selection.");
}

switch (comboBoxToUse.SelectedIndex)
{
    ...
}

ComboBox両方に選択がある場合は、例外をスローすることもできます。

于 2012-06-12T21:31:08.260 に答える