winform treeview 绑定文件夹和文件

简介: 转载:http://www.cnblogs.com/zhbsh/archive/2011/05/26/2057733.html #region 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

 

目录
相关文章
|
关系型数据库 MySQL C#
C# winform 一个窗体需要调用自定义用户控件的控件名称
给用户控件ucQRCode增加属性: //二维码图片 private PictureBox _pictureBoxFSHLQrCode; public PictureBox PictureBoxFSHLQrCode {   get { return _pictureBoxFSHLQrCode; }   set { this.pictureBoxFSHLQrCode = value; } } 在Form1窗体直接调用即可: ucQRCode uQRCode=new ucQRCode(); ucQRCode.PictureBoxFSHLQrCode.属性= 要复制或传给用户控件上的控件的值
71 0
|
6月前
|
C#
C# Winform 选择文件夹和选择文件
C# Winform 选择文件夹和选择文件
86 0
C#编程-122:文件夹选择之FolderBrowserDialog控件
C#编程-122:文件夹选择之FolderBrowserDialog控件
215 0
C#编程-122:文件夹选择之FolderBrowserDialog控件
[自定义服务器控件] 第三步:CheckBoxList。
前面发了文本框和下拉列表框的,这回发一个CheckBoxList。不知道中文名字该叫什么。CheckBoxList 最郁闷的地方就是:明明可以选择多个选项,但是 SelectedValue 只能得到第一个选项,其他被选中的还得另想办法。
770 0
|
C#
WPF 创建自定义窗体
原文:WPF 创建自定义窗体 在前面的一篇博客"WPF 自定义Metro Style窗体",展示了如何创建一个类似于Metro Style的Window,并在程序中使用。但是这个窗体不能够自由的改变大小。
1397 0
|
C#
WPF获取外部EXE图标最简单的方法
原文:WPF获取外部EXE图标最简单的方法 首先在工程添加对System.Drawing的引用 创建以下方法: public static ImageSource GetIcon(string fileName) {     System.
919 0
|
前端开发 C# 容器
WPF 中动态创建和删除控件
原文:WPF 中动态创建和删除控件 动态创建控件 1.容器控件.RegisterName("Name",要注册的控件)   //注册控件 2.
1161 0
|
C#
【C#/WPF】保存BitmapImage数据到文件中
原文:【C#/WPF】保存BitmapImage数据到文件中 参考: http://stackoverflow.
1537 0
|
C#
在 WPF 中使用 Path 路径
原文:在 WPF 中使用 Path 路径 在 WPF 中总会修改 Button 的 Style,比如一个自定义的 Close 按钮。刚入门的可能会用一张 PNG 格式的图片来做这个按钮的 Icon,但这个是不优雅的。
1757 0