Wenn ich einen ListView im virtuellen Modus verwende, dann, so wie ich es verstehe, verfolgt die Listenansicht nur eine kleine Anzahl von Elementen in der Liste. Während der Benutzer scrollt, ruft er dynamisch Elemente ab, die aus der virtuellen Liste angezeigt werden sollen.
Aber was ist, wenn ein Gegenstand aus der Hauptliste hinzugefügt oder entfernt wird? Wenn ein Element außerhalb des Bereichs von Indizes hinzugefügt oder entfernt wird, der von der Listenansicht angezeigt wird, würde ich annehmen, dass die Listenansicht die hinzugefügten / fehlenden Elemente anzeigen würde, wenn der Benutzer zu diesem Index scrollt. Ist das richtig? Was aber, wenn ein Element zum Bereich der Indizes hinzugefügt / entfernt wird, die der Benutzer gerade anzeigt? Wie löst ich die Listenansicht aus, um die aktuell angezeigten Elemente zu aktualisieren, um die neuen / fehlenden Elemente anzuzeigen?
Zu Ihrer Information: Ich benutze eine ObjectListView , wenn das irgendeinen Unterschied macht.
Eine virtuelle Liste weiß nichts über Ihre Liste von Elementen. Es verfolgt sie nicht, nicht einmal ein kleines Set. Es fragt immer nur "was willst du in der n-ten Reihe zeigen?"
Wenn sich Ihre Hauptliste ändert, müssen Sie lediglich die Liste neu zeichnen. Invalidate()
wird das für Sie tun. In der Listenansicht werden Sie dann erneut gefragt, was in jeder im Steuerelement sichtbaren Zeile angezeigt werden soll.
Wenn Sie ObjectListView verwenden, haben Sie erwogen, die FastObjectListView zu verwenden, die Ihnen die Geschwindigkeitsvorteile einer virtuellen Liste und die Benutzerfreundlichkeit einer normalen ObjectListView bietet?
Tags und Links .net c# winforms listview objectlistview