VB中的listbox删除复选选项的问题

listbox如何删除复选选项fori=0tolist1.listcount-1iflist1.selected(i)=truethenlist1.removeitemi... listbox如何删除复选选项
for i =0 to list1.listcount-1
if list1.selected(i)= true then
list1.removeitem i
end if
next
只能删除单选项啊 一多选就报错了
Private Sub Command2_Click()
For i = 0 To List2.ListCount - 1
If i = List2.ListCount Then
Exit For
ElseIf List2.Selected(i) = True Then
List1.AddItem List2.List(i)
List2.RemoveItem i
i = i + 1
End If

Next
直接把代码发上来吧 能否帮我改进这段代码 实现删除复选 内容 并添加到list1中
展开
 我来答
chinaboyzyq
2014-05-02 · TA获得超过1.3万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:3272万
展开全部
Private Sub Command1_Click()
  For i = 0 To List1.ListCount - 1
      If i = List1.ListCount Then Exit For
      If List1.Selected(i) = True Then
         List1.RemoveItem i
         i = i - 1
      End If
  Next
End Sub

Private Sub Form_Load()
  For i = 1 To 10
      List1.AddItem "aa" & i
  Next

End Sub
追问
.大神 能问下第一句if i = list1.list1.listcount then exit for 是什么意思吗
追答
因为for i=0 to List1.ListCount - 1中for 只做一次listcount-1的运算,
以后你删除条件目后,并不改变for i的结束值。
比如开始listcount是10,那么这个for循环只会做for i=0 to 9循环,
并不会每次循环都安listcont-1来改变结束值。
也就是不会象你想的for i=0 to 9 删除一条内容成为for i=0 to 8
再删除一条内容成为for i=0 to 7等等的改。
当你删除了一个记录,而for i还做0到9的循环,而条目数已经不够,所以就出错了。
我用If i = List1.ListCount Then Exit For判断当前循环条目数和listcount相等就结束循环,就不会出错了,因为条目索引最大值是listcount-1,所以i=listcount时已经循环完了所有条目。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式