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); } }
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); } } }