0

i want to access computer directory for which im uing folder browser and then the value of path selected shold be used to show treeeview .can anyone tell me what arguments to use when calling method of LISTDIRECTORY in button click.further i dont know what im doing wrong plz help

     private void button2_Click(object sender, EventArgs e)
        {
            tView.Nodes.Clear();

            if (folderBrowser.ShowDialog() == DialogResult.OK)
            {
                string[] folders = Directory.GetDirectories(folderBrowser.SelectedPath);
                foreach (string path in folders)
                {
                    ListDirectory(tView.Nodes,file.Name);
                }
            }
        }
        private static void ListDirectory(TreeView treeView,string  path)
        {


            var stack = new Stack<TreeNode>();
            var rootDirectory = new DirectoryInfo(path);
            var node = new TreeNode(rootDirectory.Name) { Tag = rootDirectory };
            stack.Push(node);

            while (stack.Count > 0)
            {
                var currentNode = stack.Pop();
                var directoryInfo = (DirectoryInfo)currentNode.Tag;
                foreach (var directory in directoryInfo.GetDirectories())
                {
                    var childDirectoryNode = new TreeNode(directory.Name) { Tag = directory };
                    currentNode.Nodes.Add(childDirectoryNode);
                    stack.Push(childDirectoryNode);
                }
                foreach (var file in directoryInfo.GetFiles())
                    currentNode.Nodes.Add(new TreeNode(file.Name));
            }

            tView.Nodes.Add(node);
        }
    }
}
4
  • the name of my treeview control is tView Commented Jan 7, 2013 at 10:25
  • do you need only folder(directory) of you need files also Commented Jan 7, 2013 at 10:33
  • do you need hidden file or not. Commented Jan 7, 2013 at 11:49
  • reply via comment ad let me help you out.. dont be nervous n angery Commented Jan 7, 2013 at 11:51

2 Answers 2

2

Use following code instead of your code:

    private void button2_Click(object sender, EventArgs e)
    { 
      if (folderBrowser.ShowDialog() == DialogResult.OK)
        {
            string strSearchPath=folderBrowserDialog1.SelectedPath;
            GetTree(strSearchPath);
        }
    } 

   void GetTree(string strSearchPath)
        {
            tView.Nodes.Clear();
            SetNode(tView, strSearchPath);
            tView.TopNode.Expand();
        }

        void SetNode(TreeView treeName, string path)
        {
            DirectoryInfo dirInfo = new DirectoryInfo(path);
            TreeNode node = new TreeNode(dirInfo.Name);
            node.Tag = dirInfo;
            GetFolders(dirInfo, node);
            GetFiles(dirInfo, node);
            treeName.Nodes.Add(node);
        }

        void GetFolders(DirectoryInfo d, TreeNode node)
        {    
            try
            {
                DirectoryInfo[] dInfo = d.GetDirectories();    
                if (dInfo.Length > 0)
                {
                    TreeNode treeNode = new TreeNode();
                    foreach (DirectoryInfo driSub in dInfo)
                    {
                        treeNode = node.Nodes.Add(driSub.Name, driSub.Name, 0, 0);
                        GetFiles(driSub, treeNode);
                        GetFolders(driSub, treeNode);
                    }
                }
            }
            catch (Exception ex) { }

        }

        void GetFiles(DirectoryInfo d, TreeNode node)
        {
           //if you want to search .doc or docx file then:
           // var files = d.GetFiles("*.doc*");

            var files = d.GetFiles("*.*");
            FileInfo[] subfileInfo = files.ToArray<FileInfo>();

            if (subfileInfo.Length > 0)
            {
                for (int j = 0; j < subfileInfo.Length; j++)
                {
                   //Checking for Hiddend files
                    bool isHidden = ((File.GetAttributes(subfileInfo[j].FullName) & FileAttributes.Hidden) == FileAttributes.Hidden);
                    if (!isHidden)
                    {                       
                            TreeNode treeNode = new TreeNode();
                            string path = subfileInfo[j].FullName;
                            string name = subfileInfo[j].Name;
                            treeNode = node.Nodes.Add(path, name);                 
                    }
                }
            }
        }

Hope this helps you :)

Sign up to request clarification or add additional context in comments.

Comments

0

Or you have to pass a TreeView instead of TreeView.Nodes. Or you can change to parameter type to Nodes, so you can pass nodes instead of the whole treeview.

               ListDirectory(**tView.Nodes**,file.Name);
            }
        }
    }
    private static void ListDirectory(**TreeView treeView**,string  path)
    {

HTH, John

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.