Versteckt ListViewItem basierend auf einem filter
Ich einige ausblenden möchten Artikel basiert auf einem text-filter in einer ListView (WinForms).
Grundsätzlich ist die listview lädt die Elemente aus einer text-Datei, und ich will ihn nicht gelesen und/oder geschrieben werden, wenn der Benutzer durchsucht die Liste. Die Suche erfolgt in einem Kombinationsfeld KeyDown-Ereignis, aber es ist nicht "Sichtbar" - Eigenschaft eines ListViewItem.
Gibt es keine einfache Möglichkeit, dies zu tun, OHNE neu-Lesen der Datei?
(da es eine XML-Datei, und es kann sogar enthalten Tausende Artikel, würde es hart sein, um die Suche effizient und lassen auch die Benutzer die Anwendung verwenden, da die Suche dauern würde, für Minuten (meist mit dem laden)).
- Können Sie uns sagen, mehr über die Umwelt? WinForms? WPF?
- Natürlich WinForms, ich bin nicht in WPF zu viel. Ich weiß, ich muss es lernen, aber das werde ich nur, wenn ich wirklich muss.
- Jetzt müssen Sie möglicherweise, nutzen der Virtualisierung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie erleben Verzögerung durch Neuzeichnen der listbox jedem hinzufügen/entfernen-operation. Versuchen Sie, wickeln Sie Ihre Hinzufügen/Entfernen op innerhalb Begin/End Update-Methode wie diese.
Nun die Geschwindigkeit zu fühlen.
Natürlich haben Sie laden Sie Ihre Datei nur einmal.
Es ist mir nicht klar, was Sie zu tun versuchen. Ich werde noch Schreien, ein paar Ideen, vielleicht ist etwas hilfreich...
Sorry wenn ich Sie falsch. 🙁
Gelöst mit der Schaffung einer eigenen Klasse für die Speicherung von Daten, und suchen Sie nach dem laden der Datei.
Obwohl schreiben von änderungen in die Datei noch eine Frage, aber das ist eine andere Geschichte...
Dies ist nicht die beste Antwort, Aber irgendwie die beste Lösung, die ich gefunden habe. Sie implementieren können, ListView.DrawItem Veranstaltung selbst, so etwas zu tun:
Dann ordnen Sie alle Elemente so, dass das gefilterte sind in das Ende der ListView. Das wird ein bisschen versteckt, aber ListView noch zählen Sie bei der Berechnung der Größe, So sollten Sie auch mit Nachdruck die Größe ListView clientsize zu.