C# listview 多项删除 代码

intn=this.lstview1.SelectedItems.Count;if(n<1){MessageBox.Show("没有选中文件");return;}for(... 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无效,是为啥啊
展开
 我来答
百度网友dc91b32
2009-03-25 · TA获得超过5650个赞
知道大有可为答主
回答量:5653
采纳率:0%
帮助的人:0
展开全部
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]);
}
定复2d
2009-03-25 · TA获得超过3196个赞
知道大有可为答主
回答量:2052
采纳率:0%
帮助的人:1933万
展开全部
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();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhifeichuan
2009-03-25 · 超过17用户采纳过TA的回答
知道答主
回答量:72
采纳率:0%
帮助的人:54.8万
展开全部
还是说直接点吧,值类型就是传数值,引用类型就是传地址
1.值类型在传递过程中如果发生改变一般不会影响原对象
2.引用类型在传递过程中如果发生改变会影响原对象(前提保证
在对象传递过程中始终是对象只向同一个地址)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kaoqiangshao
2009-03-25 · TA获得超过304个赞
知道小有建树答主
回答量:206
采纳率:0%
帮助的人:237万
展开全部
private void button1_Click(object sender, EventArgs e)
{
foreach(ListViewItem item in this.listView1.SelectedItems)
{
item.Remove();
}
}

很简单的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式