private void SortNodeList(List<TreeNode> nodeList)
{
// Sort the root list
nodeList.Sort(CompareNodes);
// Sort the sub-lists and build the sub-tree
foreach (TreeNode treeNode in nodeList)
if (treeNode.Tag is List<TreeNode>)
{
List<TreeNode> subNodeList = (List<TreeNode>)treeNode.Tag;
treeNode.Tag = null;
SortNodeList(subNodeList);
treeNode.Nodes.AddRange(subNodeList.ToArray());
}
}