List list = new List(); for (int i = 0; i < listView1.Items.Count; i++) { if (listView1.Items[i].Checked == true) { int str = Convert.ToInt32(listView1.Items[i].SubItems[0].Text); list.Add(str); } }
追答
一般情况下,你从index的最大值开始倒过来遍历即可解决。如果还不行hi我吧。
追问
好的 谢谢!
追答
但是你这代码似乎没有删除,而是添加?那又不一样了。
追问
for (int i = list.Count; i>=0; i--) { //listView1.Items.RemoveByKey(list[i].ToString()); listView1.Items.RemoveAt(Convert.ToInt32(list[i])); //listView1.SelectedItems[list[i]].Remove(); //listView1.Items.Remove(listView1.SelectedItems[str]);
}
追答
Count这里应该-1吧?
另外你for里面没有加判断?
追问
for (int i = 0; i<list.Count; i++) { //listView1.Items.RemoveByKey(list[i].ToString()); listView1.Items.RemoveAt(Convert.ToInt32(list[i])); //listView1.SelectedItems[list[i]].Remove(); //listView1.Items.Remove(listView1.SelectedItems[str]); } 现在这样了还是不能移除
追答
foreach (ListViewItem item in listView1.CheckedItems) { listView1.Items.Remove(item); }