我用treeview控件获取了每个硬盘的一级目录代码如下:
            treeView1.Nodes.Add("C:");
            System.IO.DirectoryInfo di = new DirectoryInfo(@"c:\");
            foreach (FileSystemInfo f in di.GetFileSystemInfos())
            {
                treeView1.Nodes[0].Nodes.Add(f.Name);
            }
如何获取下一级的目录呢

解决方案 »

  1.   

    递归http://www.cnblogs.com/cnmawei/archive/2007/06/12/780673.html
      

  2.   


    protected void Page_Load(object sender, EventArgs e)
            {
                relateTreeView(TreeView1, "E:\\fb");
            }
            //使用relateTreeView函数时 path 路径使用本地路径,或经过Server.MapPath("服务器的文件路径")解析过的路径
            //例如:relateTreeView(TreeView1, "D:\\Download");
            public void relateTreeView(TreeView tv, string path)
            {
                tv.Nodes.Clear();                          //清空TreeView
                tv.Nodes.Add(new TreeNode());              //添加新节点
                string[] pathinfo = Path.GetFullPath(path.Trim()).Split(char.Parse("\\")); //得到文件路径数组
                tv.Nodes[0].Text = pathinfo[pathinfo.Length - 1]; //得到文件夹名
                tv.Nodes[0].Value = path;                  //得到文件夹的详细本地路径
                tv.Nodes[0].Expanded = true;               //展开根节点 
                //tv.Nodes[0].ImageUrl = "../图片/Root.gif"; //根节点图片
                TraversingCatalog(tv.Nodes[0], path);      //调用函数
            }
            public bool TraversingCatalog(TreeNode tn, string path) //遍历文件夹
            {
                if (Directory.Exists(path) == false) { return false; }
                DirectoryInfo dirInfo = new DirectoryInfo(path);            int allNum = dirInfo.GetDirectories().Length + dirInfo.GetFiles("*.*").Length;
                if (allNum == 0) //没有任何文件夹和文件就建立"(空白)"节点并返回false
                {
                    TreeNode empty = new TreeNode();
                    empty.Text = "(空白)";  //得到文件名
                    empty.Value = "";         //得到文件的详细本地路径
                    empty.ImageUrl = "";      //节点图片
                    //empty.Expanded = false;   //折叠节点
                    tn.ChildNodes.Add(empty); //添加新节点
                    return false;
                }            //循环文件夹(避免混乱,先循环文件夹)
                int folderIndex = -1; //文件夹索引
                foreach (DirectoryInfo folder in dirInfo.GetDirectories())
                {
                    folderIndex++;
                    TreeNode folderNode = new TreeNode();
                    folderNode.Text = folder.Name;      //得到文件夹名
                    folderNode.Value = folder.FullName; //得到文件夹的详细本地路径
                    folderNode.ToolTip = folder.Name;   //得到文件夹名
                    folderNode.Expanded = false;        //折叠节点
                    //folderNode.ImageUrl = "../图片/Folder.gif"; //节点图片
                    tn.ChildNodes.Add(folderNode);      //添加新节点
                    TraversingCatalog(tn.ChildNodes[folderIndex], path + "/" + folder.Name); //递归遍历其它文件夹
                }            //循环文件
                foreach (FileInfo file in dirInfo.GetFiles("*.*")) //循环扩展名为*.*的文件
                {
                    TreeNode fileNode = new TreeNode();
                    fileNode.Text = file.Name;      //得到文件名
                    fileNode.Value = file.FullName; //得到文件的详细本地路径
                    fileNode.ToolTip = file.Name;   //得到文件名
                    fileNode.Expanded = false;      //折叠节点
                    //fileNode.ImageUrl = "../图片/TXT.gif"; //节点图片
                    tn.ChildNodes.Add(fileNode);    //添加新节点
                }
                return true;
            }
      

  3.   

    di.GetDirectories() //获取下级目录。如果想遍历,用递归。
      

  4.   

    http://hi.baidu.com/s_cide/blog/item/ec3ce03493cb3c00eac4afd9.html
     http://www.cnblogs.com/sndnnlfhvk/archive/2011/04/01/2001065.html递归示例(三):WinForm之TreeView的应用—绑定磁盘目录(一)