Frage

Ich habe eine Listview, die manchmal muss ich in rund 10000 Einzelteile setzen. Listviews Griff nicht wirklich das gut, und sie sperren für ein paar Sekunden, während sie die Gegenstände sortieren und sie ziehen. Wenn Sie die Einzelteile in einzeln hinzufügen, ist es noch schlimmer, für fast eine Minute lang aufzuhängen.

Um dies zu umgehen, ich dachte, ich würde versuchen, das Listview-bevölkern, bevor ich sie angezeigt werden müssen, aber leider hat es andere Ideen. Es beginnt erst dann zeichnen, wenn ich die Platte drehen, dass die Listview sichtbar enthält, so dass das Programm für ein paar Sekunden hängen.

Irgendwelche Ideen, wie ich diese Verzögerung beseitigen kann? Oder gibt es eine andere Komponente, die relativ einfach zu bedienen ist, dass besser ist, zu zeigen, große Datenmengen?

War es hilfreich?

Lösung

Sie müssen die Virtual .

Andere Tipps

Well. Wenn Sie nur den Inhalt in den Hintergrund laden möchten können Sie einen Thread versuchen, das Listview zu füllen, die die Form Last lassen wird.

Ich glaube nicht, dass Sie die Pause werden, wenn man ein Application.DoEvents setzen (); wenn Sie die Einzelteile geladen werden (das ermöglicht die Form Ereignisse neu zu zeichnen und zu empfangen).

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

Ich denke, meine Vorschläge sind gut, wenn Sie sich nicht bewusst von Virtual

sind
scroll top