任意选择一个文件夹,在TreeView控件中显示树型目录,我现在的问题是只能显示一层目录,怎样才能显示多层目录,直到子节点为一个文件.

解决方案 »

  1.   

    Treeview.ExpandAll() 展开所有节点
      

  2.   

    private void AddFiles(TreeNode nod) 

     string strPath = nod.FullPath; 
     string strFile; 
     foreach (int strFile in Directory.GetFiles(strPath)) { 
       nod.Nodes.Add(Path.GetFileName(strFile)).Tag = 2; 
     } 
    }
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    private void AddFolders(TreeNode nod) 

     string strPath = nod.FullPath; 
     string strDir; 
     foreach (int strDir in Directory.GetDirectories(strPath)) { 
       nod.Nodes.Add(Path.GetFileName(strDir)).Tag = 1; 
       nod.Nodes.Add(Path.GetFileName(strDir)).Nodes.Add("text"); 
     } 
    }
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''private void TreeView1_BeforeExpand1(object sender, System.Windows.Forms.TreeViewCancelEventArgs e) 

     e.Node.Nodes.Clear(); 
     AddFolders(e.Node); 
    }
    ''''''''''''''''''''''''''''''''''''''''''''''
    private void TreeView1_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e) 

     DirPath = e.Node.FullPath; 
     ListViewFresh(); 
    }
    ''''''''''''''''''''''''''''''''''''''''''''''''
    public void LoadTreeView()   //把它写在FormLoad里 shlpath是总目录路径

     TreeView1.Nodes.Clear(); 
     TreeView1.Nodes.Add(ShlPath).Nodes.Add("Test"); 
    }
      

  3.   

    private void TreeView1_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e) 

     DirPath = e.Node.FullPath; 
     ListViewFresh(); 
    }
    这个应该在这里用不到
      

  4.   

    string path ="d:/temp";
               
                System.IO.DirectoryInfo tmp = new System.IO.DirectoryInfo(path);
                string[] files = tmp.GetFiles();
                //.....            string[] dirs = tmp.GetDirectories();//得到所有子文件夹的名称
                foreach(string  tmp in dirs)
                {
                    //遍历子文件夹
                    string[] childDirs = System.IO.Directory.GetFiles(tmp);
                    //......
                }
      

  5.   

    private void Page_Load(object sender, System.EventArgs e)
    {
                string path ="E:/temp";
                
                ShowDirectories(path,this.TreeView1.Nodes);
    }        
            private void ShowDirectories(string dirPath,Microsoft.Web.UI.WebControls.TreeNodeCollection nodes)
            {
                TreeNode newNode = new TreeNode();
                newNode.Text = dirPath;
                newNode.ImageUrl = "Images\\folder1.gif";
                nodes.Add(newNode);            string[] childDirs = System.IO.Directory.GetDirectories(dirPath);
                if(childDirs.Length>0)
                    foreach(string childDir in childDirs)
                        ShowDirectories(childDir,newNode.Nodes);            string[] files = System.IO.Directory.GetFiles(dirPath);
                if(files.Length>0)
                    foreach(string file in files)
                    {
                        TreeNode fileNode = new TreeNode();
                        fileNode.Text = file;
                        fileNode.ImageUrl = "Images\\file.jpg";
                        newNode.Nodes.Add(fileNode);
                    }
            }
      

  6.   

    我刚试了,很好用,谢谢,但是有一个问题运行后抛出错误:对路径“D:\System Volume Information”的访问被拒绝。并提示确保文件不是只读的
    请问怎么解决?
      

  7.   

    技术交流群号:23266021
    欢迎大家在此讨论关于.net的各种技术。1号群
      

  8.   

    webform treeview 显示文件列表 采用ajaxPro:http://www.aspxboy.com/code/default.aspx/S7s2zPJbeI9PJA/OKHpAVwVaUEhf02EgEOgeB3Yd5Z7fLL3ZNgdv7XIqertUOYm9swwXqZ4525aiPgV7zXEob8bofuU3o3aaupA3VCA9GE3c6fW3I5gsbA0hyDIcF9PQzAdNm4dFoeQ=.Aspx