아래 코드는 내가 작업하고있는 코드입니다. 내 계정은 Dictionary (Of String, Integer)에 저장되어 값을 쉽게 연결할 수 있습니다. 가상 모드로 변환 한 후 내 listview가 훌륭하게 작동하지만 간단히 listview를 입력하여 검색 기능을 잃어 버렸습니다. 다시 얻고 싶습니다. 이 기능이 없으면 이름으로 검색 할 수없는 한 전체 기능이 실질적으로 쓸모 없게됩니다. 여러 예제를 검색하고 구현 했으므로 아무 것도 얻을 수 없습니다. 내가 도대체 뭘 잘못하고있는 겁니까? 어떻게 보일까요?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에서 제공했습니다. 기발한, 검색을 위해 내가 찾을 수있는 유일한 예 ..
Private Sub lstAccounts_SearchForVirtualItem(sender As Object, e As SearchForVirtualItemEventArgs) Handles lstAccounts.SearchForVirtualItem
Dim x As Double = 0
If [Double].TryParse(e.Text, x) Then 'check if this is a valid search
x = Math.Sqrt(x)
x = Math.Round(x)
e.Index = Fix(x)
End If
End Sub
이것은 MSDN에서 또한 필요합니다. 내가 무엇을 검색하든 관계없이 항상 null을 반환합니다. SearchForVirtualItem
이벤트에 대한 핸들러에서
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