VB.NET ListView Вопросы - PullRequest
       1

VB.NET ListView Вопросы

1 голос
/ 16 января 2012

У меня есть вопросы? Если я введу данные в текстовое поле, Я хочу, чтобы мой просмотр списка выбирал те же данные, которые были введены в текстовое поле,

пример, В моем списке просмотра есть столбец StudentNumber, в котором есть данные (например, 123456) Я введу 123456 в текстовое поле. ListView должен выбрать 123456? Пожалуйста, помогите

СПАСИБО,

1 Ответ

2 голосов
/ 16 января 2012

Я думаю, что это будет делать то, что вы хотите.Он будет искать в первом столбце ListView для текста в TextBox.

Настройка просмотра списка:

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

Предупреждение - в обоих случаях это может привести к плохой работе вашего приложения, если в вашем списке просмотра много элементов, в этом случае вы можете рассмотреть возможность перемещения кодав фоновый рабочий

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...