示例#1
0
            private void FillTreeViewNode(string?originalSelectedNodeFullNamePath, bool firstTime)
            {
                ThreadHelper.ThrowIfNotOnUIThread();

                var expandedNodesState = firstTime ? new HashSet <string>() : TreeViewNode.GetExpandedNodesState();

                Nodes.FillTreeViewNode(TreeViewNode);

                var selectedNode = TreeViewNode.TreeView.SelectedNode;

                if (originalSelectedNodeFullNamePath != selectedNode?.GetFullNamePath())
                {
                    var node = TreeViewNode.GetNodeFromPath(originalSelectedNodeFullNamePath);
                    if (node is not null)
                    {
                        TreeViewNode.TreeView.SelectedNode = !(node.Tag is BaseBranchNode branchNode) || branchNode.Visible
                            ? node
                            : null;
                    }
                }

                PostFillTreeViewNode(firstTime);

                TreeViewNode.RestoreExpandedNodesState(expandedNodesState);
            }