2008-10-21 8 views
3

J'ai une application avec un grand ListView qui est terriblement lent donc j'implémente VirtualMode. MSDN ne semble pas couvrir comment ajouter et supprimer de nouveaux éléments au milieu de la liste. Par exemple, le ListView a 1000 éléments (représentant des fichiers sur le disque) et après la population initiale de ListView (par l'événement RetrieveVirtualItem) certains fichiers seront supprimés et certains seront ajoutés de sorte que VirtualListSize pourrait même être le même après le mettre à jour.Comment mettre à jour un WinForms ListView en utilisant VirtualMode = True?

Question 1) Comment puis-je dire à la ListView 'ces éléments ont été modifiés/supprimés' afin qu'il requeries?

De plus, certains fichiers changent simplement et j'aimerais refléter leur statut modifié dans la liste.

Question 2) Comment trouver un élément dans la liste, étant donné que VirtualMode ne me laisse pas accéder à la collection Items que j'utilisais auparavant (j'ai utilisé la méthode ContainsKey sur cette collection).

Semble facile, mais je ne peux pas le voir moi-même. Aide grandement appréciée.

Ryan

Répondre

3

Pour ajouter ou supprimer des éléments, Simplay mis VirtualListSize au nombre total d'éléments. Pour actualiser des éléments individuels, utilisez RedrawItems.

Pour localiser un élément particulier, utilisez le conteneur que vous avez déjà, ne revenez pas à ListView. Les indices dans votre liste doivent correspondre aux éléments de ListView.

Questions connexes