Question

J'ai un ListView dans lequel j'ai parfois besoin de placer environ 10000 éléments. Les ListViews ne gèrent pas vraiment cela bien, et ils se verrouillent pendant quelques secondes pendant qu'ils trient les éléments et les dessinent. Si vous ajoutez les éléments individuellement, la situation est encore pire: le blocage pendant près d’une minute.

Pour résoudre ce problème, je pensais que je devrais essayer de renseigner ListView avant que je veuille l'afficher, mais malheureusement, il a d'autres idées. Il ne commence à dessiner que lorsque je mets en évidence le panneau contenant ListView, ce qui bloque le programme pendant quelques secondes.

Avez-vous des idées pour éliminer ce retard? Ou existe-t-il un autre composant relativement facile à utiliser qui permet de mieux afficher de grandes quantités de données?

Était-ce utile?

La solution

Vous devez utiliser le VirtualMode .

Autres conseils

Bien. Si vous souhaitez simplement charger le contenu en arrière-plan, vous pouvez essayer un fil de discussion pour remplir ListView, ce qui permettra au formulaire de se charger.

Je ne pense pas que vous obtiendrez la pause si vous mettez une application. DoEvents (); lorsque vous chargez les éléments (ce qui permet au formulaire de redessiner et de recevoir des événements).

for (int ix=0; ix < 10000; ix ++)
{
 listView1.Items.Add(ix.ToString());
 Application.DoEvents();
}

Je suppose que mes suggestions sont bonnes si vous ne connaissez pas VirtualMode

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top