在VB的ListView中删除多个表项的代码问题

为什么Fori=lv.ListItems.CountTo1Step-1Iflv.ListItems(i).SelectedThenlv.ListItems.Removei... 为什么
For i = lv.ListItems.Count To 1 Step -1
If lv.ListItems(i).Selected Then lv.ListItems.Remove i
Next
能实现删除多个表项而
For i =0 To lv.ListItems.Count
If lv.ListItems(i).Selected Then lv.ListItems.Remove i
Next
却提示索引超出边界???
展开
 我来答
syx54
2013-07-02 · TA获得超过7378个赞
知道大有可为答主
回答量:6567
采纳率:83%
帮助的人:2737万
展开全部
你想想前者是从后向前移除
比如:有10项
从10开始向前操作,假设移除10,其他的项号还是存在的并且不变的

反之,从前向后操作.
假设要移除1,5,10
现在,当你先移除1以后,第10就没有了,并且原来的5也变成了4,再移除5的话,就是移除错了!!!!
数学王子他
2013-07-04 · TA获得超过1706个赞
知道小有建树答主
回答量:510
采纳率:100%
帮助的人:501万
展开全部
首先要纠正你的说法:

For i = lv.ListItems.Count To 1 Step -1
If lv.ListItems(i).Selected Then lv.ListItems.Remove i
Next
能实现删除多个表项”
其实For语句是有错的,应为:
For i = lv.ListItems.Count-1 To 0 Step -1
其次:
For i =0 To lv.ListItems.Count-1 (这里应加-1)
If lv.ListItems(i).Selected Then lv.ListItems.Remove i
Next
删除前面的项目后,后续的项目的序号会自动减小,因此,只要有一个项目被删除,必然导致最后一项的序号超出范围,所以应采用倒删法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式