一个更好的获得VBListBox的items的方法

一个更好的获得VBListBox的items的方法,第1张

一个更好的获得VBListBox的items的方法,第2张

收集多选Visual Basic ListBox项的更好方法

传统的Visual Basic观点认为,为了从多选列表框中收集选定的项,应该遍历所有的项并测试选定的属性。然而,与所有循环一样,这可能会导致CPU运行缓慢。作为一种更快、更优雅的替代方法,您可以使用sendmessage () API函数。

您可能知道,这个函数允许您向一个或多个窗口发送消息。声明语句符合以下语法:

私有声明函数SendMessage Lib " user 32 " _
Alias " SendMessage a "(ByVal hwnd为Long,ByVal wMsg _
为Long,ByVal wParam为Long,lParam为Any)为Long

因为我们想收集listbox comments: s selected items,我们注释:ll在wmsg参数中发送lb _ getselitems常量,如下所示:

私有常量LB_GETSELITEMS = &H191

实际上,LB_GETSELITEMS消息用所有选定项的索引号填充一个数组。因此,您必须用SendMessage()传递两个额外的参数。第一个参数应包含选定项目的最大数量。要检索这个值,只需使用listbox note: s sel count属性。第二个参数应该保存要用索引值填充的数组变量。以下示例显示了如何使用该函数:

Dim ItemIndexes()为Long,x为Integer,iNumItems为Integer
iNumItems = ThisBox。sel count
If iNumItems Then
ReDim item indexes(iNumItems-1)
SendMessage listbox 1 . hwnd,LB_GETSELITEMS,iNumItems,_
item indexes(0)
End If
For x = 0 To iNumItems-1
MsgBox listbox 1。list(item indexes(x))
Next x

在传递给SendMessage函数后,iNumItems保存所选项目的总数,ItemIndexes数组保存所选项目的索引值。请注意,您必须传递指向ItemIndexes数组的指针,而不是数组本身。因此,我们将ItemIndexes(0)传递给SendMessage函数,而不是ItemIndexes()。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 一个更好的获得VBListBox的items的方法

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情