如何删除Listview的项?

MMABing 2001-11-06 10:00:42
我用下面的语句删除Listview中的项目:
For i = 1 To ListView1.ListItems.Count
If ListView1.ListItems(i).Selected Then
ListView1.ListItems.Remove (i)
End If
Next i
但程序出错,提示“索引超出边界”。
请问怎样书写语句才能正确删除?
...全文
195 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
foolishtiger 2001-11-06
  • 打赏
  • 举报
回复
'因为你删除了某项后,ListItems的索引相应的就发生了变化
'比如你有100项,可你已移除了30项,但你的循环却要从1 到100执行100次,等执行到71时就出错了!因为已经没有70以后的索引了
'最简单的解决方法是 "For x = ListView1.ListItems.Count To 1 Step -1"
'修改如下:
Dim x As Integer
For x = ListView1.ListItems.Count To 1 Step -1
If ListView1.ListItems(x).Checked = True Then
ListView1.ListItems.Remove (x)
End If
Next
Amoon 2001-11-06
  • 打赏
  • 举报
回复
for each ....next 不行的,我先就试过了,会报错,说集合已经更改。
Jneu 2001-11-06
  • 打赏
  • 举报
回复
最好用 For Each...Next 语句
Jneu 2001-11-06
  • 打赏
  • 举报
回复
后面加一句 Exit for 只能删除一条ListItem。
Jneu 2001-11-06
  • 打赏
  • 举报
回复
For i = ListView1.ListItems.Count-1 To 0
If ListView1.ListItems(i).Selected Then
ListView1.ListItems.Remove (i)
End If
Next i
Amoon 2001-11-06
  • 打赏
  • 举报
回复
你的代码我调过了。我添加了100个ListItem,删除一个ListItem后出错。原因是当你删除了一个ListItem后,ListItems.Count就比原来少1,循环变量i却以只要循环到100。当i>ListItem.count时出错.
你可以在ListView1.ListItems.Remove(i)后面加一句 Exit for就可避免。
hhdsq 2001-11-06
  • 打赏
  • 举报
回复
同意楼上
Jneu 2001-11-06
  • 打赏
  • 举报
回复
lstMain.ListItems.Clear
Jneu 2001-11-06
  • 打赏
  • 举报
回复
For i = 0 To ListView1.ListItems.Count-1
If ListView1.ListItems(i).Selected Then
ListView1.ListItems.Remove (i)
End If
Next i

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧