C#:ArgumentOutOfRangeException未被usercode处理

时间:2012-01-23 21:46:55

标签: c# forms listbox

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

我制作了一些代码,但是当我尝试它时,我一直得到:

  

用户代码

未处理ArgumentOutOfRangeException

这是更详细的错误:

  

{“InvalidArgument ='1'的值无效   'SelectedIndex'。\ r \ n参数名称:SelectedIndex“}

这是我的代码:

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

编辑:

感谢所有帮助人员!我删除了这个问题,不删除项目,只是让它迭代下来。

4 个答案:

答案 0 :(得分:2)

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

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);
    }
}

答案 1 :(得分:0)

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

注意,selectedIndex基于零,而不是基于。

MSDN说出了您的错误:

  

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:-15)

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

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