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

 

你可能感兴趣的:(treeview)