1
我有疑问? 如果我在一个文本框中输入一个数据, 我希望我的ListView选择在文本框中输入了相同的数据,VB.NET ListView问题
例如, 我在我的列表视图有StudentNumber列,它有它(例如数据123456 ) 我将在文本框中输入123456。 ListView必须选择123456? 请帮助
谢谢
我有疑问? 如果我在一个文本框中输入一个数据, 我希望我的ListView选择在文本框中输入了相同的数据,VB.NET ListView问题
例如, 我在我的列表视图有StudentNumber列,它有它(例如数据123456 ) 我将在文本框中输入123456。 ListView必须选择123456? 请帮助
谢谢
我认为这会做你想要什么。它将搜索文本框中文本的ListView的第一个列。
设置列表视图:
With ListView1
.MultiSelect = False 'Ensure only one item selected at a time
.HideSelection = False 'Shows the selection when the textbox changes
'Add some items for testing
.Items.Add("1234")
.Items.Add("1122")
.Items.Add("1133")
End With
然后在文本框中TextChanged
更改事件:
Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
ListView1.SelectedItems.Clear()
Dim foundItem As ListViewItem = ListView1.FindItemWithText(TextBox1.Text, False, 0, False)
If (foundItem IsNot Nothing) Then foundItem.Selected = True
End Sub
另外,如果你想指定要搜索的你的ListView列的文本,则这功能应该诀窍:
Private Sub SelectListViewItem(ByRef listviewSource As ListView, ByVal textToFind As String, ByVal column As Integer)
Dim foundItem As ListViewItem = Nothing
Dim startIndex As Integer = 0
listviewSource.SelectedItems.Clear()
Do Until Not foundItem Is Nothing AndAlso foundItem.SubItems(column).Text = TextBox2.Text
If foundItem Is Nothing Then startIndex = 0 Else startIndex = foundItem.Index + 1
If startIndex > listviewSource.Items.Count - 1 Then Exit Sub 'We have reached end of the listview
foundItem = listviewSource.FindItemWithText(textToFind, True, startIndex)
If foundItem Is Nothing Then Exit Sub
Loop
If (foundItem IsNot Nothing) Then foundItem.Selected = True
End Sub
用法:
Private Sub TextBox2_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox2.TextChanged
SelectListViewItem(ListView1, TextBox2.Text, 1)
End Sub
警告 - 在这两种情况下,这可能会导致如果你有很多的项目的应用程序表现不佳在您的列表视图,在这种情况下,你可以考虑代码移动到背景工作人员
非常感谢您的先生,我有另一个问题,如果我想要项目点击,而不是选择?谢谢 – 2012-01-19 14:13:52