[转]Treeview 应用

1.Treeview显示文件系统

View Code
//使用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.png"; //根节点图片       
        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++;
            tn.ChildNodes.Add(this.GetTreeNode(folder));      //添加新节点        
            TraversingCatalog(tn.ChildNodes[folderIndex], path + "/" + folder.Name); //递归遍历其它文件夹 
        }            //循环文件         
        foreach (FileInfo file in dirInfo.GetFiles("*.*")) //循环扩展名为*.*的文件     
        {                   
            tn.ChildNodes.Add(this.GetTreeNode(file));    //添加新节点        
        }
        return true;
    }

    private TreeNode GetTreeNode(FileInfo file)
    {
        TreeNode fileNode = new TreeNode();
        fileNode.Text = file.Name;      //得到文件名
        fileNode.Value = file.FullName; //得到文件的详细本地路径
        fileNode.ToolTip = file.Name;   //得到文件名
        fileNode.Expanded = false;      //折叠节点
        fileNode.ImageUrl = "Document.png"; //节点图片        
        return fileNode;
    }

    private TreeNode GetTreeNode(DirectoryInfo folder)
    {
        TreeNode folderNode = new TreeNode();
        folderNode.Text = folder.Name;      //得到文件夹名
        folderNode.Value = folder.FullName; //得到文件夹的详细本地路径
        folderNode.ToolTip = folder.Name;   //得到文件夹名
        folderNode.Expanded = false;        //折叠节点
        folderNode.ImageUrl = "folder.png"; //节点图片

        return folderNode;
    }

调用代码

 relateTreeView(TreeView1, @"D:\TDDOWNLOAD");

 

2.基本的Treeview 应用代码

 

View Code
        TreeView1.Nodes.Add(new TreeNode("桌面", "Desktop"));
        TreeView1.Nodes[0].ChildNodes.Add(new TreeNode("我的文档", "My Documents"));
        TreeView1.Nodes[0].ChildNodes[0].ChildNodes.Add(new TreeNode("我的音乐", "My Musics"));
        TreeView1.Nodes[0].ChildNodes[0].ChildNodes[0].ChildNodes.Add(new TreeNode("music.mp3", "music.mp3"));
        TreeView1.Nodes[0].ChildNodes.Add(new TreeNode("我的电脑", "My Computer"));
        TreeView1.Nodes[0].ChildNodes[1].ChildNodes.Add(new TreeNode("C 盘", "C:"));
        TreeView1.Nodes[0].ChildNodes[1].ChildNodes[0].ChildNodes.Add(new TreeNode("boot.ini", "boot.ini"));

 

posted on 2012-07-07 15:17  少  阅读(187)  评论(0)    收藏  举报