TreeView - schnelle Updates von TreeNodes


Thomas Wölfer
Thomas Wölfer

08. Februar 2005


Das TreeView Control in Windows.Forms (1.0) kapselt das Win32 TreeView Control - und hat dabei nicht nur dessen Flexibilität sondern auch dessen Probleme geerbt.

Das Problem das mich am meisten nervt ist das unendliche träge Verhalten des Controls bei Updates von TreeNodes. Fügt man viele Nodes in die TreeView ein, so macht das nicht das geringste Problem. Will man von diesen Nodes dann aber zum Beispiel die Texte verändern ( node.Text = "Neuer Text"; ), dann dauert das ewig. Auf meinem Rechner braucht ein Update der Texte von etwa 400 Nodes ungefähr 3 Sekunden. Das ist viel zu lange, wenn diese Updates als Reaktion auf eine User-Aktion hin erfolgen.

Man kann das Update aber extrem beschleunigen. Fürs schnelle update muss man nicht viel tun - man nimmt nur einfach die Top-Level Nodes aus der TreeView, führt dann das Update der Nodes durch, und trägt die Nodes danach dann wieder in der TreeView ein: Schon ist die Sache 'instant'.

Das ganze sieht also etwa so aus:

ArrayList temp = new ArrayList();
temp.AddRange(treeView.Nodes);
treeView.Nodes.Clear();

// Update erfolgt hier ...

foreach( TreeNode node in temp)
{
   treeView.Nodes.Add(node);
}