C# listview 多项删除 代码

来源:百度知道 编辑:UC知道 时间:2024/06/15 12:50:06
int n = this.lstview1.SelectedItems.Count;
if (n < 1)
{
MessageBox.Show("没有选中文件");
return;
}
for (int i = 0; i < n; i++) {
this.lstview1.Items.Remove(this.lstview1.SelectedItems[i]);

}

我想删除listview多选的几项,运行后出现错误,index无效,是为啥啊

this.lstview1.Items.Remove(this.lstview1.SelectedItems[i]);

你这样做显然是不行的,你想想看,有10条记录,你想删掉后5条记录,但是,等你删掉一些记录后,总数就不够10条记录了,这时你再删除第10条记录肯定会报错的,而且是索引越界的错误,

foreach(ListViewItem item in this.listView1.SelectedItems)
{
item.Remove();
}
这种方法肯定不行的,因为集合是可变的,不能用foreach,

这样:
for (int i = 0; i < this.lstview1.SelectedItems.Count; i++) {
this.lstview1.Items.Remove(this.lstview1.SelectedItems[0]);
}

private void button2_Click(object sender, EventArgs e)
{
if (this.listView1.SelectedItems.Count < 1)
{
MessageBox.Show("没有选中文件");
return;
}
for(int i=0;i<this.listView1.SelectedItems.Count;i++)
this.listView1.SelectedItems[i].Remove();
}

还是说直接点吧,值类型就是传数值,引用类型就是传地址
1.值类型在传递过程中如果发生改变一般不会影响原对象
2.引用类型在传递过程中如果发生改变会影响原对象(前提保证
在对象传递过程中