private void AddTree(Tree tree) { tree.TreeViewNode.SelectedImageKey = tree.TreeViewNode.ImageKey; tree.TreeViewNode.Tag = tree; treeMain.Nodes.Add(tree.TreeViewNode); treeMain.Font = AppSettings.Font; _rootNodes.Add(tree); tree.RefreshTree(); }
private void AddTree(Tree tree, int positionIndex) { tree.TreeViewNode.SelectedImageKey = tree.TreeViewNode.ImageKey; tree.TreeViewNode.Tag = tree; // Remember current Tree's position index _treeToPositionIndex[tree] = positionIndex; // Add Tree's node in position index order. Because TreeNodeCollections cannot be sorted, // we create a list from it, sort it, then clear and re-add the nodes back to the collection. treeMain.BeginUpdate(); List <TreeNode> nodeList = treeMain.Nodes.OfType <TreeNode>().ToList(); nodeList.Add(tree.TreeViewNode); treeMain.Nodes.Clear(); treeMain.Nodes.AddRange(nodeList.OrderBy(treeNode => _treeToPositionIndex[treeNode.Tag as Tree]).ToArray()); treeMain.EndUpdate(); treeMain.Font = AppSettings.Font; _rootNodes.Add(tree); tree.RefreshTree(); }