以下是我的程序,这里有个问题,把目录遍历出来后,向树中添加节点的时候,没有分层次,请问一下,添加节点的这个函数AddDirToTreeView()里面应该怎么写,怎么判断哪个节点应该添加到哪个层次上?-------------------------------- protected Microsoft.Web.UI.WebControls.TreeView TreeView1;

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
string ParentDir = Server.MapPath("") + "\\upload\\项目管理文件";
DirWork(ParentDir);
}
//遍历目录,并添加到树中
private void DirWork(string Dir)
{

AddDirToTreeView(Dir);
string[] Dirs = Directory.GetDirectories(Dir);
foreach(string d in Dirs)
{

DirWork(d); }
}
//添加目录到树中
private void AddDirToTreeView(string Dir)
{

TreeNode Tnd = new TreeNode();
Tnd.Text = Dir;
TreeView1.Nodes.Add(Tnd); }

解决方案 »

  1.   

    这是一个树先序遍历的算法,先添加上层目录,再添加下层目录。
    因此AddDirToTreeView参数为两个,
    private void AddDirToTreeView(string Dir,string ParentDir)
    {

    TreeNode Tnd = new TreeNode();
    Tnd.Text = Dir;
    TreeView1.Nodes[ParentDir].Add(Tnd);
    }
      

  2.   

    //将这两个函数改为如下,在Page_load中对第二个参数传空串即可。DirWork(ParentDir,""); private void AddDirToTreeView(string Dir,string ParentDir)
    {
    TreeNode Tnd = new TreeNode();
    Tnd.Text = Dir;
    if (ParentDir.Length() == 0)
                                  TreeView1.Nodes.Add(Tnd);
                               else
       TreeView1.Nodes[ParentDir].Add(Tnd);
    } private void DirWork(string Dir, string parentDir)
    {

    AddDirToTreeView(Dir,parentDir);
    string[] Dirs = Directory.GetDirectories(Dir);
    foreach(string d in Dirs)
    {

    DirWork(d,Dir); }
    }
      

  3.   

    谢谢,思路我知道了, TreeView1.Nodes[ParentDir].Add(Tnd);是不是有问题,Nodes[]方括号中的参数应该是索引吧。请指教阿!