繁体   English   中英

C#:ArgumentOutOfRangeException未被usercode处理

[英]C#: ArgumentOutOfRangeException was unhandled by usercode

我有一个if语句说如果一个网页有一个特定的文本来删除listBox上的选定项目并迭代到下一个。

我做了一些代码,但是当我尝试它时,我不断得到:

用户代码未处理ArgumentOutOfRangeException

这是更详细的错误:

{“InvalidArgument ='1'的值对'SelectedIndex'无效。\\ r \\ nParameter name:SelectedIndex”}

这是我的代码:

        listBox1.Items.Remove(listBox1.SelectedItem);
        listBox1.SelectedIndex = + 1;

编辑:

谢谢你所有的帮助! 我删除了这个问题,没有删除项目,只是让它迭代下来。

您必须测试您尝试选择的项目是否存在。

int index = listBox1.SelectedIndex;
listBox1.Items.RemoveAt(index);
If (index < listBox1.Items.Count) {
    listBox1.SelectedIndex = index; 
}

编辑:如果要删除循环中的项目,最好从最后开始,因为删除项目会更改以下项目的位置。 每次移除项目时,向上循环都会使您跳过项目。

for (int i = listBox1.Items.Count - 1; i >= 0; i--) {
    if (listBox1.Items[i].ToString() == "whatever") {
        listBox1.Items.RemoveAt(i);
    }
}

我必须看到完整的代码示例(使用if语句)才能确定。 但很明显,您将所选项目设置为不在列表框中的索引。

注意,selectedIndex是基于零的,而不是基于一个。

MSDN说你的错误:

ArgumentOutOfRangeException:指定的值小于-1或大于或等于项目计数。

由于错误表明当您将SelectedIndex设置为1时发生了这种情况,我假设在调用此代码时,列表框中只有一个项目(index = 0)。

由于索引从0开始,因此将SelectedIndex设置为1是在列表中选择第二个值。 当你删除了除一个值之外的所有值并试图将SelectedIndex设置为第二个值时,我猜它失败了。

是否要选择listBox中的第一项? 如果是这样,代码将是:

if(listBox1.Items.Count > 0) listBox1.SelectedIndex = 0;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM