vb 问题,关于FOR循环 List2.RemoveItem (i)问题

来源:百度知道 编辑:UC知道 时间:2024/05/01 22:56:21
错在哪里?为什么?
Private Sub Command2_Click()
For i = 0 To List2.ListCount - 1
If List2.Selected(i) Then
List2.RemoveItem (i)
End If
Next
End Sub

你意思是想删除选择的内容是么?楼上的只能用于单选删除,多选会出错。

应该这样:
For i = 0 To List1.ListCount - 1
If List1.Selected(i) Then
List1.RemoveItem (i)
Exit Sub'加上这个
End If
Next

不用的话,你想想,listbox的item个数一开始是一定的,但是当你删除了其中一个,队列的个数就没有当初那么多了,到了后面的循环,listbox中根本没有这个位置了

例如:

本来是listbox个数5,i=0 to 4,删除一个之后个数是4,那意思就是只有0-3了,这个时候你用selected(4)去检测,当然会出错了。

这个是单选的删除方法。

多选就不需要exit sub

但是个数需要从后面开始上来

For i = List1.ListCount - 1 to 0 step -1 '倒数过来,自己想想吧~
If List1.Selected(i) Then
List1.RemoveItem (i)
End If
Next

Private Sub Command1_Click()
List1.Clear
End Sub

方便快捷

Do While List2.ListIndex <> -1
List2.RemoveItem(List2.ListIndex)
Loop

的确有问题