Performance in Windows Forms TreeView
4 Feb 20222 minutes to read
WinForms TreeViewAdv performance can be improved by the following properties and methods.
EnableVirtualization
In TreeViewAdv, while loading 20,000 nodes it took nearly 60 seconds to load. Make this delay as considerable time this property is enabled. When EnableVirtualization
is set as true, the parent nodes are added by scrolling the vertical scrollbar and the child nodes are added when expanding the respected parent node
SuspendExpandRecalculate
Improves performance of the TreeViewAdv with large number of nodes. Generally, the time taken to populate 5000 child nodes to a root node takes 10 milliseconds. But after setting the SuspendExpandRecalculate
property to true, the time taken for populating is decreased to half of its original time i.e., 5 milliseconds. The unnecessary calling of Recalculate dimensions for the child nodes when the Root nodes are collapsed is also reduced.
RecalculateExpansion
By default, it is true. This property when set to false, greatly improves the performance of the tree nodes on load.
Property Table
TreeViewAdv Properties | Description |
---|---|
EnableVirtualization | Indicate whether virtualization support is enabled or not |
SuspendExpandRecalculate | Indicate whether the Recalculation of the Nodes maximum height should be done while expanding or collapsing |
RecalculateExpansion | Indicates if node dimension calculation should be done on load. |
Methods Table
TreeViewAdv Methods | Description |
---|---|
BeginUpdate | Calling this method will stop the redraws of the control and makes the node addition more faster than normal. |
EndUpdate | Resumes the painting of the control suspended by BeginUpdate method. |
Note
While adding more than one node to the treeViewAdv control, calling the
BeginUpdate
andEndUpdate
method will improve performance of the control.
this.treeViewAdv1.SuspendExpandRecalculate=true; this.treeViewAdv1.EnableVirtualization = true;
this.treeViewAdv1.BeginUpdate();
for (int i = 1; i <= 20000; i++)
{
TreeNodeAdv treeNode = new TreeNodeAdv("Parent " + i);
treeViewAdv1.Nodes.Add(treeNode);
}
this.treeViewAdv1.EndUpdate();
Me.treeViewAdv1.SuspendExpandRecalculate=True
Me.treeViewAdv1.EnableVirtualization = True
Me.treeViewAdv1.BeginUpdate()
'add more number of nodes
'...
Me.treeViewAdv1.EndUpdate()