大家都来找错误

minkerui 2001-03-10 04:39:00
一个程序,内有LISTBOX控件,一个COMMAND按钮,要使它删除选种项,为什么要出错?而且i的值似乎都是listcount-1????望解答,谢谢!
Private Sub Command1_Click()
For i = 0 To List1.ListCount - 1
If List1.Selected(i) = True Then
List1.RemoveItem i
End If
Next i
End Sub
...全文
90 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
limengchen 2001-03-11
  • 打赏
  • 举报
回复
list1.remove(list1.list.index)
minkerui 2001-03-10
  • 打赏
  • 举报
回复
谢谢各位!
Ninputer 2001-03-10
  • 打赏
  • 举报
回复
糟糕,错了,应该是:
Do While i <= List1.Count - 1
If List1.Selected(i) Then
List1.RemoveItem i
Goto Continue
End If
i = i + 1
Continue:
Loop


Ninputer 2001-03-10
  • 打赏
  • 举报
回复
也可以改为Do循环:
Do While i <= List1.Count - 1
If List1.Selected(i) Then
List1.RemoveItem i
i = i + 1
End If
Loop

Random 2001-03-10
  • 打赏
  • 举报
回复
当然了,你每次删除了一个选项之后,ListCount就减少一个,那么ListBox的最大项目数就为
ListCount - 2,自然循环到ListCount - 1时就错了(数组越界)。一种解决办法是反过来循环:
Private Sub Command1_Click()
For i = List1.ListCount - 1 To 0 Step -1
If List1.Selected(i) = True Then
List1.RemoveItem i
i = i-1
End If
Next i
End Sub

OK?记得加分o

7,763

社区成员

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

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