Liste schneller Löschen als DeleteAllItems()??
-
Hallo, kennt jemand eine Möglichkeit die Einträge eines Listenelements schneller zu löschen als mit DeleteAllItems()??
Das Problem ist, dass ich in meiner Applikation einen Browser einfügen muss, fülle ich nun die Liste mit den Ordnerinhalten, braucht DeleteAllItems() ein bischen und das Arbeiten wird so etwas unpraktikabel.
-
mit nem array könnte es vielleicht schneller gehn
kannst ja mal nen kleinen speedtest basteln
-
Wie mit nem Array. Das Problem ist doch, dass alle angezeigten Einträge den beuen weichen müssen. Als Beispiel siehe Windows Explorer. Kaum geklickt schon der neue Verzeichnisinhalt angezeigt.
-
Und wozu ein DeleteAllItems?!
-
Hallo,
ein sehr ähnliches Problem habe ich auch. Bei mir ist es eine CTreeView, aus der ich in meiner Anwendung bei Neuerstellen, Importieren oder Öffnen von Dateien etwa 3000 Einträge (3000 Root-Items mit mehreren Child-Items)wegbekommen muß. Das dauert bei einem 1.5GHz Prozessor und 133 MHz FSB Speicher etwa 1 Minute. Eine vernünftige Lösung ist hier überfällig. Vielleicht hat doch jemand einen konkreten Vorschlag.
Danke
WOODZ
-
Hm weiß nicht...
Vielleicht hilft es etwas das komplette CTreeView Objekt zu löschen und neu zu erstellen

-
Was auf alle Fälle hilft, ist das control zu verstecken und nach dem löschen erst wieder zu zeigen - ShowWindow(SW_HIDE); DeleteAllItems(); ShowWindow(SW_SHOW)
Für Listen ist die "ultimative" Lösung der Virtual Mode, wo du nur die Zeilenzahl setzt und die Daten nach Bedarf in einer Notification setzt.
Bei trees hilft es, die Wurzel zu collapsen.
-
Hey, das stimmt. Einfach Baum verstecken, und schon reduziert sich die Zeit auf einen winzigen Bruchteil.
So einfach kann man doch ein scheinbar großes Problem lösen.
-
Yeässss,
das bringt aber doch einiges!