seehttp://www.codeguru.com/samples/DriveExplorer.html资源管理器的例子

解决方案 »

  1.   

    我调试了一下,应该是dataview的问题,到第一个末点的时候就回不来了,没有递归的效果。
    分不够再加!!!
    请各位垂怜!!!
      

  2.   

    没有考虑当前节点,如果你加上当前节点,foreach结束后再加反回父节点,就不会错了。
      

  3.   

    那么程序该怎么改呢?
     RoueDust(浪尘)救我!
      

  4.   

    我做过和你一样的东西,除了用ARRAYLIST存储原始数据之外,别的没什么不同
    思路如下,省略了语法细节
    pirvate sbyte BuildTree(TreeNode parentNode, ArrayList list)
    {
      //搜索当前节点的子节点
      for(int i=0; i < list.count; i ++)
      {
        if(list.pid = parentNode.id)
        //子节点找到
        {
          //为当前节点增加一个子节点
          TreeNode node = new TreeNode;
          node.pid = list.id
          node.id = xxx;
          parentNode.Nodes.Add(node);
          //删除list中的对应数据
          list.Remove(list[i]);
          //递归,搜索子节点的子节点
          sbyte retChild = BuildTree (node, list);
          //搜索结束,退出
          if (retChild == 0 ||list.Count == 0){return 0;}
          //没有找到子节点的子节点
          if (retChild < 0)
          {
            //递归,搜索子节点的兄弟
            sbyte retBrother = BuildTree (parentNode, list);
            if (retBrother == 0 ||list.Count == 0){return 0;}
          }
        }
      }
      //没有找到当前节点的子节点
      return -1;
    }