vb6 - 如何使用搜索按钮和文本框将结果显示到列表视图
问题描述
我正在编写一个搜索按钮来列表视图并仅显示结果数据
Private Sub Command3_Click()
Dim itmx As ListItem
Set itmx = Listview1.FindItem(Text3.Text, lvwText, , lvwPartial)
If itmx Is Nothing Then
MsgBox "record not found", vbCritical
Else
Listview1.ListItems(itmx.Index).Selected = True
Listview1.SetFocus
End If
End Sub
我希望结果将仅显示我在文本框中搜索的数据,上面的代码仅突出显示列表视图中的行。
解决方案
此代码将在您的 ListView 中选择与您的搜索条件匹配的多个项目,并删除那些不匹配的项目:
Private Sub Command3_Click()
Dim itmx As ListItem
Dim iIndex As Integer
Dim iRecordsFound As Integer
Dim fMultiSelect As Boolean
' Store state of ListView's MultiSelect property and set it to True
fMultiSelect = ListView1.MultiSelect
ListView1.MultiSelect = True
' Deselect any selected items
For iIndex = 1 To ListView1.ListItems.Count
ListView1.ListItems.Item(iIndex).Selected = False
Next
' Initialize variables
iIndex = 1
iRecordsFound = 0
Do While iIndex > 0 And iIndex <= ListView1.ListItems.Count
Set itmx = ListView1.FindItem(Text3.Text, lvwText, iIndex, lvwPartial)
If itmx Is Nothing Then
iIndex = 0
Else
itmx.Selected = True
iIndex = itmx.Index + 1
iRecordsFound = iRecordsFound + 1
End If
Loop
' Delete unselected items
For iIndex = ListView1.ListItems.Count To 1 Step -1
If Not ListView1.ListItems.Item(iIndex).Selected Then
ListView1.ListItems.Remove iIndex
End If
Next
If iRecordsFound = 0 Then
MsgBox "No records found", vbCritical
Else
MsgBox iRecordsFound & " records found", vbInformation
End If
' Restore state of ListView's MultiSelect property
ListView1.MultiSelect = fMultiSelect
ListView1.SetFocus
End Sub
推荐阅读
- angular - Angular 填充来自 2 个不同 Web 服务的 mat-optgroup/mat-options
- api - 从预请求脚本中的集合调用请求
- clojure - 为什么这段代码在 Clojure 中报告堆栈溢出
- shell - 如果使用 getopts 解析,shell 脚本标志可以有可选参数吗?
- r - heemod::如何在运行模型时为两种策略定义不同的初始计数
- r - 使用 lodowm 从 PNADc 下载年度数据
- html - Dynamic FontAwesome - 将 unicode 作为参数传递给 CSS 文件
- node.js - Passport 和 Json-WebToken 验证失败
- google-sheets - 将多列排列为一列,列标题作为单独的列
- java - Check if a parameter contains variable or string