我正在尝试编写一个与我在下面的代码中显示的效果类似的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;
}
答案 0 :(得分:2)
尝试使用
switch ((cboMAIN.SelectedIndex > -1) ? cboMAIN.SelectedIndex : cboMAINalternate.SelectedIndex)
{
答案 1 :(得分:1)
不,那是不可能的(至少不是你这样做的方式)。
问题是,你想要实现什么目标?如果你有某种切换方式在两个索引之间切换,你可以这样做:
bool useAlternative = ...;
switch(useAlternative ? cboMAINalternate.SelectedIndex : cboMAIN.Selectedindex) {
// ...
}
答案 2 :(得分:0)
select元素中始终有一个选定的项目,因此您必须检查您认为没有选择的项目,例如第一项:
var item = cboMAIN.SelectedIndex;
if (item = 0) item = cboMAINalternate.SelectedIndex;
switch (item) {
...
答案 3 :(得分:0)
可能是最简洁的方式:
switch (Math.Max(cboMAIN.SelectedIndex, cboMAINalternate.SelectedIndex))
{
// ...
}
答案 4 :(得分:0)
根据MSDN,如果SelectedIndex
上的选择为空,则-1
将返回ComboBox
。
以下代码应选择带有选择的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
都有选择,您可能还想抛出异常。