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

选择元素中总是有一个选定的项目,因此您必须检查您认为没有选择的项目,例如第一个项目:

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,如果 a 上的选择为空,SelectedIndex将返回。-1ComboBox

以下代码应选择ComboBox带有选择的 a 并通过您的 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如果两个es 都有选择,您可能还想抛出异常。

于 2012-06-12T21:31:08.260 回答