2016-06-28 6 views
-1

Ich habe einige Probleme bei der Suche in einer ListView bei der Verwendung von VirtualMode. Der ListView füllt nur mit RetrieveVirtualItem-Ereignis auf.Suche nach ListViewItem in VirtualMode

Ich habe ein Textfeld und "Suche" auf meinem Formular.

private void btnSearch_Click(object sender, EventArgs e) 
{ 
    listViewFields.FindItemWithText(txtSearch.Text); 
} 

Ich habe das SearchForVirtualItem Ereignis behandelt, die für den Text in meiner Sammlung aussieht und setzt den Index auf den Index-Eigenschaft des Ereignis args.

Der Wert von e.Index wird auf den erwarteten Wert gesetzt, aber dann passiert nichts in meinem ListView.

+0

haben Sie darüber nachgedacht in der MSDN vier [ListView.SearchForVirtualItem Event] suchen (https://msdn.microsoft.com/en-us/library/system.windows.forms.listview.searchforvirtualitem (v = vs.110) .aspx) – MethodMan

+0

Das ist, was ich benutze. Wenn Sie meinen zweiten Codeblock bemerken, handle ich mit diesem Ereignis. Die FindItemWithText-Methode löst dieses Ereignis aus und der Wert von e.Text in den Ereignisargumenten ist der Wert, den ich an FindItemWithText übergeben habe. Nichts passiert. – James

+0

http://stackoverflow.com/questions/27129619/how-to-use-finditemwithtext – MethodMan

Antwort

0

Der Wert von e.Index wird auf den erwarteten Wert gesetzt, aber dann passiert nichts in meinem ListView.

Die FindItemWithText Methode macht genau das, was sie sagt - findet und kehrt das erste ListViewItem, die mit dem angegebenen Textwert beginnt.

Damit etwas in Ihrer Listenansicht passiert, müssen Sie etwas mit dem zurückgegebenen Element tun. Zum Beispiel:

var item = listViewFields.FindItemWithText(txtSearch.Text); 
if (item != null) 
{ 
    listViewFields.FocusedItem = item; 
    item.Selected = true; 
    item.EnsureVisible(); 
} 
+0

Das scheint auch nicht zu funktionieren. – James

+0

Gibt es etwas zurück? –

+0

Ja, tut es. Es gibt den Artikel zurück, den ich erwartet habe. Das Problem besteht darin, dass die Listenansicht nicht auf dieses Element verweist. – James