就像windows的资源管理器中的treeView一样的?哪位给个参考...

解决方案 »

  1.   

    http://www.codeproject.com/vb/net/VbNetExpTree.asp
      

  2.   

    刚好我前段时间写了一个,你先看看吧,应该还有可以改进之处的
    //获取本地硬盘驱动器
    private void loadLogicDiscs()
    {
    string[] localDrives = Directory.GetLogicalDrives();
    foreach(string eachDrive in localDrives)
    {
    TreeNode driveNode = new TreeNode(eachDrive);
    treeView1.Nodes[0].Nodes.Add(driveNode);
    addDirectories(driveNode);
    }
    }//得到逻辑驱动器下的文件夹
    //在我的程序中因为已经定义了一个根节点,根节点的名字叫“my computer”,所以我在得到全路径后还写了几句代码来取掉这个“my computer”
    private void addDirectories(TreeNode tn)
    {
    tn.Nodes.Clear();  //清除所有节点
    string tnPath = tn.FullPath;  //得到当前节点的全路径
    int temp = tnPath.IndexOf("\\");  //寻找该全路径中第一个“\”符号,便于处理掉路径中根节点字符
    tnPath = tnPath.Remove(0,temp+1);  //得到有效路径
    DirectoryInfo dirInfo = new DirectoryInfo(tnPath);
    DirectoryInfo[] arrayDirInfo;
    try
    {
    arrayDirInfo = dirInfo.GetDirectories();
    foreach(DirectoryInfo di in arrayDirInfo)
    {
    TreeNode tnDir = new TreeNode(di.Name);
    tn.Nodes.Add(tnDir);
    }
    }
    catch
    {
    return;
    }
    }//在你的treeView中添加BeforeExpand或AfterExpand事件,使得你每展开一个结点都会出现该结点的所有子节点
    private void treeView1_BeforeExpand(object sender, System.Windows.Forms.TreeViewCancelEventArgs e)
    {
    treeView1.Update();
    foreach(TreeNode tn in e.Node.Nodes)
    {
    addDirectories(tn);
    }
    treeView1.EndUpdate();
    }
      

  3.   

    通过递归可以简单实现。
    http://blog.csdn.net/zhzuo/archive/2005/03/08/315125.aspx