引发ArgumentOutOfRange异常
本文关键字:异常 ArgumentOutOfRange 引发 | 更新日期: 2023-09-27 18:27:14
我一直在编写一个Winforms应用程序,其中用户从comboBox中选择一些内容。但是,当我运行应用程序时,编译器抛出ArgumentOutOfRange异常,因为索引为-1。
代码:
if (comboBox1.Enabled == false || comboBox2.Enabled == true || comboBox3.Enabled == false)
{
int index = comboBox2.SelectedIndex;
string t = comboBox2.Items[index].ToString();//<==EXCEPTION
switch (t)
{
case "Ounzes==>Pounds":
break;
case "Pounds==>Ounzes":
break;
case "Tons==>Pounds":
break;
case "Pounds==>Tons":
break;
case "Ounzes==>Tons":
break;
case "Tons==>Ounzes":
break;
case "Stone==>Pound":
break;
case "Pound==>Stone":
break;
case "Tons==>Stone":
break;
case "Stone==>Ton":
break;
}
}
有人能解释一下为什么会抛出这个异常吗,因为我确实从comboBox中选择了一些东西。
您的ComboBox
中似乎没有选择任何项目。查看文档:
当前所选项目的从零开始的索引。如果未选择任何项目,则返回负一(-1)的值。
解决这个问题最明显的方法就是在你尝试使用之前检查一下,确保已经选择了一个项目,比如:
int index = comboBox2.SelectedIndex;
if (index >= 0)
{
string t = comboBox2.Items[index].ToString();
switch (t)
{
...
}
}
检查代码何时启动。可能是combo1被填充的时候,但combo2还没有。
正如其他人所说,快速方法是测试selectedIndex>=0或selectItem!=无效的
最好的做法是将代码放入try-catch块中,您将自己找到答案:)