发送 消息 进行查找,速度 很快的。
================================================================ Private Type POINTAPI
x As Long
y As Long
End Type Private Type LVFINDINFO
flags As Long
psz As String
lParam As Long
pt As POINTAPI
vkDirection As Long
End Type Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const LVM_FIRST = &H1000
Private Const LVM_FINDITEM = (LVM_FIRST + 13)
Private Const LVFI_PARAM = &H1
Private Const LVFI_STRING = &H2
Private Const LVFI_PARTIAL = &H8
Private Const LVFI_WRAP = &H20
Private Const LVFI_NEARESTXY = &H40 Private Sub Command1_Click()
Dim lRet As Long, LFI As LVFINDINFO
LFI.flags = LVFI_PARTIAL Or LVFI_WRAP
LFI.psz = Text1.Text
lRet = SendMessage(ListView1.hwnd, LVM_FINDITEM, -1, LFI)
If lRet >= 0 Then Set ListView1.SelectedItem = ListView1.ListItems(lRet + 1): ListView1.SetFocus
End Sub Private Sub Form_Load()
Dim li As ListItem, k As Long
For k = 1 To 10
Set li = ListView1.ListItems.Add(, , "Line " & k): li.SubItems(1) = "L" & k
Next
End Sub
================================================================ Private Type POINTAPI
x As Long
y As Long
End Type Private Type LVFINDINFO
flags As Long
psz As String
lParam As Long
pt As POINTAPI
vkDirection As Long
End Type Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const LVM_FIRST = &H1000
Private Const LVM_FINDITEM = (LVM_FIRST + 13)
Private Const LVFI_PARAM = &H1
Private Const LVFI_STRING = &H2
Private Const LVFI_PARTIAL = &H8
Private Const LVFI_WRAP = &H20
Private Const LVFI_NEARESTXY = &H40 Private Sub Command1_Click()
Dim lRet As Long, LFI As LVFINDINFO
LFI.flags = LVFI_PARTIAL Or LVFI_WRAP
LFI.psz = Text1.Text
lRet = SendMessage(ListView1.hwnd, LVM_FINDITEM, -1, LFI)
If lRet >= 0 Then Set ListView1.SelectedItem = ListView1.ListItems(lRet + 1): ListView1.SetFocus
End Sub Private Sub Form_Load()
Dim li As ListItem, k As Long
For k = 1 To 10
Set li = ListView1.ListItems.Add(, , "Line " & k): li.SubItems(1) = "L" & k
Next
End Sub
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货