我有if语句说如果网页有某个文本要删除listBox上的选定项目并迭代到下一个。
我制作了一些代码,但是当我尝试它时,我一直得到:
用户代码
未处理ArgumentOutOfRangeException
这是更详细的错误:
{“InvalidArgument ='1'的值无效 'SelectedIndex'。\ r \ n参数名称:SelectedIndex“}
这是我的代码:
listBox1.Items.Remove(listBox1.SelectedItem);
listBox1.SelectedIndex = + 1;
编辑:
感谢所有帮助人员!我删除了这个问题,不删除项目,只是让它迭代下来。
答案 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;