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

 

posted @ 2015-01-21 10:53  跟着阿笨一起玩.NET  阅读(1984)  评论(0编辑  收藏  举报