Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 从listview中删除项目时发生Outofrange异常_C# 4.0 - Fatal编程技术网

C# 4.0 从listview中删除项目时发生Outofrange异常

C# 4.0 从listview中删除项目时发生Outofrange异常,c#-4.0,C# 4.0,我有一个listview,它有多行,并且启用了复选框。我试图编写一个代码,在取消选中项目复选框时删除项目,因为默认情况下选中了项目复选框 在itemcheck事件中 If(list.Focused == true) { If (e.newvalue == checkState.unchecked) { list.items.removeAt( e.index); list.Refresh(); } } 我得到一个outofrange异常,1不是有效的索引 “1”指我删除的项目的索引您必须

我有一个listview,它有多行,并且启用了复选框。我试图编写一个代码,在取消选中项目复选框时删除项目,因为默认情况下选中了项目复选框 在itemcheck事件中

If(list.Focused == true)
{
If (e.newvalue == checkState.unchecked)
 {
 list.items.removeAt( e.index);
 list.Refresh();
}
}
我得到一个outofrange异常,1不是有效的索引
“1”指我删除的项目的索引

您必须测试索引是否在范围内(因为集合缩小)。在删除元素之前添加此测试:

if(list.items.count < e.index && e.index > 0)
if(list.items.count0)

这是检查事件中的解决方案,您有当前值和新值。如果您删除项目,则在检查事件完成之前,不会应用新值。该类将抛出范围,因为它试图分配已删除项目的属性
您可以使用列表在选中的事件中添加项目,并在选中的事件中删除项目并清除列表

我觉得还可以。你能检查一下,这个事件没有因为任何错误被多次调用吗?程序主方法中的异常不在事件中你所说的主方法是什么意思。你能分享相关代码吗?例外情况来自Application.Run(新表单());我认为您共享的代码没有任何问题。可能您必须共享正确的代码段。如果不确定,则发布完整的表单代码。如果索引为0,此代码如何工作,以及如何索引>计数有时您的事件会触发两次。在这种情况下,ListView中不再存在e.index..它在事件结束前出现异常lambda expretionI分配的事件没有看到任何lambda表达式,请发布您的所有代码。另外,您可以尝试使用remove而不是removeat来抑制by object…阅读我在文章中的最后一条评论