winform treeview 绑定文件夹和文件

转载:http://www.cnblogs.com/zhbsh/archive/2011/05/26/2057733.html

#region  treeview 绑定文件夹和文件

        /// <summary>
        /// 根据文件夹绑定到树
        /// </summary>
        /// <param name="treeview"></param>
        /// <param name="FilePath"></param>
        /// <returns></returns>
        public bool SetTreeNoByFilePath(TreeView treeview, string FilePath,ImageList imgs)
        {
            treeview.Nodes.Clear();
            treeview.ImageList = imgs;
            try
            {
                foreach (DirectoryInfo direc in new DirectoryInfo(FilePath).GetDirectories())
                {
                    TreeNode tn = new TreeNode(direc.Name);
                    tn.Text = direc.FullName;
                    SetTreeNodeIco(tn, "dir",imgs);
                    tn.Tag = direc.FullName;
                    SetSubDirectoryTreenode(direc, tn,imgs);
                    treeview.Nodes.Add(tn);
              

                }
                foreach (FileInfo finfo in new DirectoryInfo(FilePath).GetFiles())
                {
                    TreeNode temptreenode = new TreeNode(finfo.Name);
                    temptreenode.Tag = finfo.FullName;
                    temptreenode.Text = finfo.Name;
                    SetTreeNodeIco(temptreenode, finfo.Extension, imgs);
                    treeview.Nodes.Add(temptreenode);
                }

 

                return true;
            }
            catch
            {
                return false;
                
                
            }
        
        }
        /// <summary>
        /// 设置子目录的
        /// </summary>
        /// <param name="direc">目录路径</param>
        /// <param name="tn"></param>
        /// <param name="imglist"></param>
        private void SetSubDirectoryTreenode(DirectoryInfo direc, TreeNode tn,ImageList imglist)
        {
            foreach (DirectoryInfo dir in new DirectoryInfo(direc.FullName).GetDirectories())
            {
                TreeNode temptn = new TreeNode(dir.Name);
                temptn.Tag = dir.FullName;
                SetTreeNodeIco(temptn, "dir", imglist);
                temptn.Text = dir.Name;
                tn.Nodes.Add(temptn);
                foreach (FileInfo fileinfo in new DirectoryInfo(dir.FullName).GetFiles())
                {
                    TreeNode temptreenode = new TreeNode(fileinfo.Name);
                    temptreenode.Tag = fileinfo.FullName;
                    temptreenode.Text = fileinfo.Name;
                    SetTreeNodeIco(temptreenode, fileinfo.Extension,imglist);
                    temptn.Nodes.Add(temptreenode);
                    
                }
                SetSubDirectoryTreenode(dir, temptn, imglist);

            }
        }

        /// <summary>
        /// 为treeview设置小图标
        /// </summary>
        /// <param name="tn"></param>
        /// <param name="strExt"></param>
        /// <param name="imgs"></param>
        private void SetTreeNodeIco(TreeNode tn, string strExt, ImageList imgs)
        {
            string ext = strExt.Replace(".", "");
            if (ext.ToLower() == "dir")
            {
                tn.ImageIndex = imgs.Images.IndexOfKey("close");
                tn.SelectedImageIndex = imgs.Images.IndexOfKey("open");
            }
            else if (ext.ToLower() == "doc" || ext.ToLower() == "rar" || ext.ToLower() == "txt")
            {
                tn.ImageIndex = imgs.Images.IndexOfKey(ext);
                tn.SelectedImageIndex = imgs.Images.IndexOfKey(ext);
            }
            else
            {
                tn.ImageIndex = imgs.Images.IndexOfKey("other");
                tn.SelectedImageIndex = imgs.Images.IndexOfKey("other");
            }
        }

 

        #endregion


        #region 只绑定文件夹


        /// <summary>
        /// 根据文件夹绑定到树
        /// </summary>
        /// <param name="treeview"></param>
        /// <param name="FilePath"></param>
        /// <returns></returns>
        public bool SetTreeNoByFilePath(TreeView treeview, string FilePath)
        {
            treeview.Nodes.Clear();
          
            try
            {
                foreach (DirectoryInfo direc in new DirectoryInfo(FilePath).GetDirectories())
                {
                    TreeNode tn = new TreeNode(direc.Name);
                    tn.Text = direc.FullName;
                 
                    tn.Tag = direc.FullName;
                    SetSubDirectoryTreenode(direc, tn);
                    treeview.Nodes.Add(tn);


                }
               return true;
            }
            catch
            {
                return false;


            }

        }
        /// <summary>
        /// 设置子目录的
        /// </summary>
        /// <param name="direc">目录路径</param>
        /// <param name="tn"></param>
        /// <param name="imglist"></param>
        private void SetSubDirectoryTreenode(DirectoryInfo direc, TreeNode tn)
        {
            foreach (DirectoryInfo dir in new DirectoryInfo(direc.FullName).GetDirectories())
            {
                TreeNode temptn = new TreeNode(dir.Name);
                temptn.Tag = dir.FullName;
                  temptn.Text = dir.Name;
                tn.Nodes.Add(temptn);
                foreach (FileInfo fileinfo in new DirectoryInfo(dir.FullName).GetFiles())
                {
                    TreeNode temptreenode = new TreeNode(fileinfo.Name);
                    temptreenode.Tag = fileinfo.FullName;
                    temptreenode.Text = fileinfo.Name;
                 
                    temptn.Nodes.Add(temptreenode);

                }
                SetSubDirectoryTreenode(dir, temptn);

            }
        }

        #endregion
View Code

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值