Ejemplo n.º 1
0
        private void FillNodeWithFolderContents(TriStateTreeNode folderNode)
        {
            ////Remove "root\"
            //if (folderRealPath.StartsWith("root"))
            //    folderRealPath = folderRealPath.Remove(0, 5);
            ////string filePath = newNode.FullPath.Remove(0, (startNode.Text + startNode.TreeView.PathSeparator).Length);
            //if (folderRealPath.EndsWith(":"))
            //    folderRealPath += "\\";

            DirectoryInfo di = new DirectoryInfo((string)folderNode.Tag);

            if (!di.Exists)
            {
                return;
            }
            FileSystemInfo[] fsis = di.GetFileSystemInfos();

            //sort alphabetically
            SortedList <string, TreeNode> sorted = new SortedList <string, TreeNode>();
            Dictionary <string, TriStateTreeView.CheckBoxState> states = new Dictionary <string, TriStateTreeView.CheckBoxState>();

            foreach (FileSystemInfo fsi in fsis)
            {
                TriStateTreeNode node = (TriStateTreeNode)folderNode.Nodes[fsi.Name];
                if (node == null)
                {
                    //TODO: is fsi a folder or a file? How to find out?
                    node = new TriStateTreeNode(fsi.Name);
                    folderNode.Nodes.Add(node);
                    //node = folderNode.Nodes.Add(fsi.Name);
                    node.Name = fsi.Name;
                    node.Tag  = fsi.FullName;
                    this.treeView1.SetTreeNodeState(node, TriStateTreeView.CheckBoxState.Unchecked);
                }
                sorted.Add(fsi.Name, node);
                states.Add(fsi.Name, this.treeView1.GetTreeNodeState(node));
            }
            folderNode.Nodes.Clear();

            sorted.GetEnumerator();
            for (int i = 0; i < sorted.Count; i++)
            {
                TriStateTreeNode node = (TriStateTreeNode)sorted.Values[i];
                TriStateTreeView.CheckBoxState state = states[node.Name];
                folderNode.Nodes.Add(node);
                this.treeView1.SetTreeNodeState(node, state);
            }
        }
Ejemplo n.º 2
0
        private void GetCheckedNodes(TreeNodeCollection nodes, List <string> fileList)
        {
            foreach (System.Windows.Forms.TreeNode aNode in nodes)
            {
                TriStateTreeView.CheckBoxState state = treeView1.GetTreeNodeCheckBoxState(aNode);
                //edit
                if (state == TriStateTreeView.CheckBoxState.Checked && aNode.Nodes.Count == 0)
                {
                    fileList.Add(aNode.Tag as string);
                }

                if (aNode.Nodes.Count != 0)
                {
                    GetCheckedNodes(aNode.Nodes, fileList);
                }
            }
        }