从列表视图中删除项目时出现超出范围的异常

时间:2017-07-23 07:19:39

标签: c#-4.0

我有一个列表视图,其中有多行并且启用了复选框我尝试编写一个代码,当我取消选中项目复选框时删除项目,因为默认选中它 在itemcheck事件中

If(list.Focused == true)
{
If (e.newvalue == checkState.unchecked)
 {
 list.items.removeAt( e.index);
 list.Refresh();
}
}

我得到了一个outofrange异常,1对索引无效 '1'指的是我删除的项目的索引

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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