Beispiel #1
0
        public Form1(IEnumerable <FileInfo> files)
        {
            InitializeComponent();

            var parentList = new Dictionary <string, FileTreeNode>();
            var rootNodes  = new List <FileTreeNode>();

            foreach (var file in files)
            {
                var node     = new FileTreeNode(file, true);
                var rootNode = AddParentsOfNode(parentList, file.Directory, node);

                if (rootNode != null)
                {
                    rootNodes.Add(rootNode);
                }
            }

            foreach (var node in rootNodes)
            {
                MergeNodes(node);
            }

            fileTree.Nodes.AddRange(rootNodes.ToArray());
        }
Beispiel #2
0
        private FileTreeNode AddParentsOfNode(IDictionary <string, FileTreeNode> parentList, DirectoryInfo nodeDir, FileTreeNode node)
        {
            if (nodeDir == null)
            {
                return(node);
            }

            var parentDidNotExist = false;

            if (!parentList.TryGetValue(nodeDir.FullName, out FileTreeNode parentNode))
            {
                parentNode = new FileTreeNode(nodeDir);
                parentList[nodeDir.FullName] = parentNode;

                parentDidNotExist = true;
            }

            parentNode.Nodes.Add(node);

            if (parentDidNotExist)
            {
                return(AddParentsOfNode(parentList, nodeDir.Parent, parentNode));
            }

            return(null);
        }