日期:2014-05-17  浏览次数:21035 次

listview 删除选中项的问题
其中一个方法:如下
private void deleteItem( ListView listview)
  {
  for (int i = 0; i < listview.Items .Count ; i++)
  {
  if (listview.Items[i].Checked == true)
  {
  listview.CheckedItems[0].Remove();
  }
  }
   
   
  }
结果总是会在删除一部分选中项,留下一部分选中项 ? 大神们,这是为啥?

------解决方案--------------------
应该会将你所有选中的项,即listview.CheckedItems[i].Checked=true的item全部删除;
因为item[0]删除后,item[0]后面紧跟着选中的CheckedItem会填充item[0]的位置,直到遇见item[0].Checked=false的那个选项

我觉得代码是这样
------解决方案--------------------
listview.CheckedItems[0].Remove();这行代码会改变listview.Items .Count的值,而你的循环用到了它,所以会导致循环的次数不是你所希望的。你可以考虑把所有的check的项全部读出来然后再次循环删除。