Ниже приведен код, с которым я работаю. Мои учетные записи хранятся в словаре (Of String, Integer), поэтому я могу легко связать с ними значение. Мой список отлично работает после того, как я преобразовал его в virtualmode, но я потерял функциональность для поиска, просто введя список, который я хотел бы получить назад. Без этого это делает всю функцию практически бесполезной, если я не могу искать по имени. Я искал и реализовал несколько примеров, и я не могу заставить работать. Что я делаю не так? Как это должно выглядеть?Как использовать FindItemWithText?
Это заполняет мой список.
Private Sub lstAccounts_RetrieveVirtualItem(sender As Object, e As RetrieveVirtualItemEventArgs) Handles lstAccounts.RetrieveVirtualItem
lstAccounts.VirtualListSize = MainForm.accounts.Count 'Update after a dictionary edit.
Dim i As New ListViewItem(MainForm.accounts.Keys(e.ItemIndex))
If MainForm.accounts.ContainsKey(MainForm.accounts.Keys(e.ItemIndex).ToString) Then
i.SubItems.Add(MainForm.accounts.Item(i.Text))
End If
e.Item = i
End Sub
Это от MSDN. Предположительно требуется для поиска, только пример, который я мог найти.
Это также из MSDN. Независимо от того, что я ищу, он постоянно возвращает null.
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
Dim item1 As ListViewItem = lstAccounts.FindItemWithText(TextBox1.Text)
If (item1 IsNot Nothing) Then
MessageBox.Show("Calling FindItemWithText passing" & TextBox1.Text & ": " _
& item1.ToString())
Else
MessageBox.Show("Calling FindItemWithText passing" & TextBox1.Text & ": null")
End If
End Sub
Я действительно надеялся, что кто-то сможет мне помочь в этом. – Josh