如何删除vb列表框所选项目?
答案:5 悬赏:30 手机版
解决时间 2021-02-19 20:39
- 提问者网友:暮烟疏雨之际
- 2021-02-19 15:08
如何删除vb列表框所选项目?
最佳答案
- 五星知识达人网友:孤独入客枕
- 2021-02-19 16:34
由于列表框每次可以选择单个列表项,也可以同时选中多个列表项,这取决于MultiSelect属性的取值。所以,不同的情况处理方法也不同。
如果列表框每次只允许选择一个列表项的话(MultiSelect属性值为0),则可以用下面一句代码将所选的列表项删除
List1.RemoveItem ListIndex
上面代码中的ListIndex是列表框中所选项目的索引号。
如果列表框允许每次选择多个列表项的话(MultiSelect属性值为1或者2),则必须使用循环代码逐个删除,比如
Dim intI As Integer
For intI = List1.ListCount - 1 To 0 Step -1 '从后往前扫描
If List1.Selected(intI) = True Then List1.RemoveItem intI
Next intI
上面代码中Selected是一个数组属性,选中的列表项其Selected属性为True,没有选中的列表项其Selected属性为False。在允许多项选择的情况下是判断哪些列表项选中或未选中的惟一办法。
另外一个要点就是,对多个列表项的删除操作要从后往前扫描。如果从前向后扫描,则每次删除一个列表项时List属性(该属性为一个保存了列表项的数组)的长度都减1,循环次数会超过表中元素的个数,结果就会产生运行时错误。而从后向前扫描则可以避免这个问题。
如果列表框每次只允许选择一个列表项的话(MultiSelect属性值为0),则可以用下面一句代码将所选的列表项删除
List1.RemoveItem ListIndex
上面代码中的ListIndex是列表框中所选项目的索引号。
如果列表框允许每次选择多个列表项的话(MultiSelect属性值为1或者2),则必须使用循环代码逐个删除,比如
Dim intI As Integer
For intI = List1.ListCount - 1 To 0 Step -1 '从后往前扫描
If List1.Selected(intI) = True Then List1.RemoveItem intI
Next intI
上面代码中Selected是一个数组属性,选中的列表项其Selected属性为True,没有选中的列表项其Selected属性为False。在允许多项选择的情况下是判断哪些列表项选中或未选中的惟一办法。
另外一个要点就是,对多个列表项的删除操作要从后往前扫描。如果从前向后扫描,则每次删除一个列表项时List属性(该属性为一个保存了列表项的数组)的长度都减1,循环次数会超过表中元素的个数,结果就会产生运行时错误。而从后向前扫描则可以避免这个问题。
全部回答
- 1楼网友:孤独的牧羊人
- 2021-02-19 20:26
i = List1.ListIndex
For i = 0 To List1.ListCount - 1
If List1.Selected(i) = True Then
List2.AddItem List1.List(i)
List1.RemoveItem List1.List(i)
end if
Next i追问这个不行 会出错追答倒过来走
For i = List1.ListCount - 1 To 0 Step -1
If List1.Selected(i) = True Then
List2.AddItem List1.List(i)
List1.RemoveItem List1.ListIndex
i = i - 1
End If
Next i
End Sub
For i = 0 To List1.ListCount - 1
If List1.Selected(i) = True Then
List2.AddItem List1.List(i)
List1.RemoveItem List1.List(i)
end if
Next i追问这个不行 会出错追答倒过来走
For i = List1.ListCount - 1 To 0 Step -1
If List1.Selected(i) = True Then
List2.AddItem List1.List(i)
List1.RemoveItem List1.ListIndex
i = i - 1
End If
Next i
End Sub
- 2楼网友:鱼芗
- 2021-02-19 20:01
删除vb列表框所选项目。remove(i)
- 3楼网友:零点过十分
- 2021-02-19 18:25
从0开始往下删除,那肯定要出错误,或者难以处理。
换一个思路,从下往上(从最大序号往0方向判断并删除就可以了);
Dim i As Integer
For i = List1.ListCount - 1 To 0 Step -1
If List1.Selected(i) Then
List1.RemoveItem i
End If
Next i
换一个思路,从下往上(从最大序号往0方向判断并删除就可以了);
Dim i As Integer
For i = List1.ListCount - 1 To 0 Step -1
If List1.Selected(i) Then
List1.RemoveItem i
End If
Next i
- 4楼网友:詩光轨車
- 2021-02-19 18:13
Dim i As Integer
For i = 0 To List1.ListCount - 1
If List1.Selected(i) = True Then
List2.AddItem (List1.List(i))
End If
Next
For i = List1.ListCount - 1 To 0 Step -1
If List1.Selected(i) = True Then
List1.RemoveItem (i)
End If
Next
这样添加到List2的项可以顺序
For i = 0 To List1.ListCount - 1
If List1.Selected(i) = True Then
List2.AddItem (List1.List(i))
End If
Next
For i = List1.ListCount - 1 To 0 Step -1
If List1.Selected(i) = True Then
List1.RemoveItem (i)
End If
Next
这样添加到List2的项可以顺序
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯