Listing subfolders and files from an main folder within treeview c#

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • bhagyap
    New Member
    • Nov 2011
    • 14

    Listing subfolders and files from an main folder within treeview c#

    Hi..

    I am populating a treeview in form1 based on the checkeditems in checkedlistbox which is in form2 but am unable to list the subfolders and files of the checked folder..

    Can anyone please help me????

    Thanks..

    hi..

    This is my scenario but am not getting any error..

    I have two forms form1 and form2,in form1 i have an treeview and in form2 i have checkedlistbox which i am populating as follows:-

    Code:
    System.IO.DirectoryInfo di = new System.IO.DirectoryInfo("E:\\Mails");
                System.IO.FileSystemInfo[] files = di.GetDirectories();
                checkedListBox1.Items.AddRange(files);
    and based on the checkedfolder i am building an treeview but am unbale to view the subfolders and files from the checked folder..
    Last edited by Niheel; Dec 12 '11, 03:19 AM. Reason: merged code into description
  • adriancs
    New Member
    • Apr 2011
    • 122

    #2
    hi, can u show the code where the error occurs?

    Comment

    • bhagyap
      New Member
      • Nov 2011
      • 14

      #3
      Following is my code and am getting error for GetDirectories. .

      Could not find a part of the path 'E:\mails\Syste m.Windows.Forms .CheckedListBox +CheckedItemCol lection'.



      private void ListDirectory(T reeView treeView, string path)
      {
      treeView.Nodes. Clear();
      var rootDirectoryIn fo = new DirectoryInfo(p ath);
      treeView.Nodes. Add(CreateDirec toryNode(rootDi rectoryInfo));
      }

      private static TreeNode CreateDirectory Node(DirectoryI nfo directoryInfo)
      {
      var directoryNode = new TreeNode(direct oryInfo.Name);
      foreach (var directory in directoryInfo.G etDirectories() )
      directoryNode.N odes.Add(Create DirectoryNode(d irectory));
      foreach (var file in directoryInfo.G etFiles())
      directoryNode.N odes.Add(new TreeNode(file.N ame));
      return directoryNode;
      }

      Please help me...

      Comment

      • adriancs
        New Member
        • Apr 2011
        • 122

        #4
        ............... ............... .

        Comment

        • adriancs
          New Member
          • Apr 2011
          • 122

          #5
          You may want to try this:

          resource: http://www.dreamincode.net/code/snippet2591.htm

          Code:
          public void PopulateTree(string dir, TreeNode node)
          {
              DirectoryInfo directory = new DirectoryInfo(dir);
              foreach (DirectoryInfo d in directory.GetDirectories())
              {
                  TreeNode t = new TreeNode(d.Name);
                  PopulateTree(d.FullName, t);
                  node.Nodes.Add(t);
              }
              foreach (FileInfo f in directory.GetFiles())
              {
                  TreeNode t = new TreeNode(f.Name);
                  node.Nodes.Add(t);
              }
          }

          Comment

          • adriancs
            New Member
            • Apr 2011
            • 122

            #6
            can you show the codes (or blocks of code)>> How do you get this? From where do you get this?

            Code:
            'E:\mails\System.Windows.Forms.CheckedListBox+Chec kedItemCollection'
            It seems to be somewhere related to CheckedListBox.

            How do you get the directory path from CheckedListBox?

            Comment

            • bhagyap
              New Member
              • Nov 2011
              • 14

              #7
              I have overcome the exception which is as follows:-

              foreach (var obj in opt.checkedList Box1.CheckedIte ms)
              {
              ListDirectory(t reeView1, "E:\\mails\ \" + obj);
              treeView1.Expan dAll();
              }
              now the problem is i am unable to loop for all the checked folders..

              Please guide me where i am going wrong..

              Comment

              • adriancs
                New Member
                • Apr 2011
                • 122

                #8
                I'm still trying to understand what you want.

                You want to add all files in all checked folders from CheckedListBox into a TreeView Control, is it?

                Comment

                • bhagyap
                  New Member
                  • Nov 2011
                  • 14

                  #9
                  yes.. the checked folder should list its sub folders and files then display into treeview..

                  Comment

                  • adriancs
                    New Member
                    • Apr 2011
                    • 122

                    #10
                    Code:
                    private void button1_Click(object sender, EventArgs e)
                    {
                        foreach (var obj in checkedListBox1.CheckedItems)
                        {
                            PopulateTree("E:\\mail" + obj, treeView1.Nodes.Add(obj + ""));
                        }
                    }
                    
                    public void PopulateTree(string dir, TreeNode node)
                    {
                        DirectoryInfo directory = new DirectoryInfo(dir);
                        foreach (DirectoryInfo d in directory.GetDirectories())
                        {
                            TreeNode t = new TreeNode(d.Name);
                            PopulateTree(d.FullName, t);
                            node.Nodes.Add(t);
                        }
                        foreach (FileInfo f in directory.GetFiles())
                        {
                            TreeNode t = new TreeNode(f.Name);
                            node.Nodes.Add(t);
                        }
                    }

                    Comment

                    • bhagyap
                      New Member
                      • Nov 2011
                      • 14

                      #11
                      Thank You.. but can u please help me in not repeating the folders into treeiew..

                      Comment

                      • adriancs
                        New Member
                        • Apr 2011
                        • 122

                        #12
                        can you give an example of "not repeating the folders into treeview".

                        Comment

                        • bhagyap
                          New Member
                          • Nov 2011
                          • 14

                          #13
                          as i am populating the treeview from checkedlistbox i am retaining the state of it whenever the form loads so if i check a new folder and return to main form it populates the newly checked folders as well as previously checked..

                          And how can i add root node to this??

                          Thank You!!!

                          Comment

                          • adriancs
                            New Member
                            • Apr 2011
                            • 122

                            #14
                            Code:
                            private void button1_Click(object sender, EventArgs e)
                            {
                                treeView1.Nodes.Clear();
                                treeView1.Nodes.Add("Root");
                                foreach (var obj in checkedListBox1.CheckedItems)
                                {
                                    PopulateTree("F:\\" + obj, treeView1.Nodes[0]);
                                }
                            }

                            Comment

                            • bhagyap
                              New Member
                              • Nov 2011
                              • 14

                              #15
                              Thank You.. Ur code is very heplful to me..

                              Comment

                              Working...