`

TreeView控件操作开发篇之(五)

    博客分类:
  • C#
 
阅读更多
 
  #region 加载文件夹及文件到树

        /// <summary>
        /// 加载文件夹文件到树控件
        /// </summary>
        /// <param name="Tv">TreeView</param>
        /// <param name="DirPath">要加载的文件夹路径</param>
        /// <param name="ImgList">ImageList</param>
        /// <returns>True/False</returns>
        public bool LoadDirAndFiles(TreeView Tv, string DirPath, ImageList ImgList)
        {
            try
            {
                Tv.Nodes.Clear();
                Tv.ImageList = ImgList;
                //遍历文件夹
                foreach (DirectoryInfo Dir in new DirectoryInfo(DirPath).GetDirectories())
                {
                    TreeNode TN = new TreeNode();
                    TN.Text = Dir.Name;
                    TN.Tag = Dir.FullName;
                    SetTreeNodeIcon(TN, "Dir", ImgList);
                    Tv.Nodes.Add(TN);

                    ForLoadDirAndFiles(TN, Dir, ImgList);

                    //遍历文件夹下的文件 
                    foreach (FileInfo File in Dir.GetFiles())
                    {
                        TreeNode FTn = new TreeNode();
                        FTn.Text = File.Name;
                        FTn.Tag = File.FullName;
                        SetTreeNodeIcon(FTn, File.Extension, ImgList);
                        TN.Nodes.Add(FTn);
                    }
                }
                //遍历文件夹下的文件 
                foreach (FileInfo file in new DirectoryInfo(DirPath).GetFiles())
                {
                    TreeNode aTn = new TreeNode();
                    aTn.Text = file.Name;
                    aTn.Tag = file.FullName;
                    SetTreeNodeIcon(aTn, file.Extension, ImgList);
                    Tv.Nodes.Add(aTn);
                }
                return true;
            }
            catch 
            {
                return false;
            }
        }

        /// <summary>
        ///加载传入的文件夹文件列表
        /// </summary>
        /// <param name="CurrTn">树节点</param>
        /// <param name="CurrDir">文件夹</param>
        private void ForLoadDirAndFiles(TreeNode CurrTn, DirectoryInfo CurrDir, ImageList ImgList)
        {
            //遍历CurrDir文件夹下的文件夹
            foreach (DirectoryInfo aDir in CurrDir.GetDirectories()) 
            {
                TreeNode TN = new TreeNode();
                TN.Text = aDir.Name;
                TN.Tag = aDir.FullName;
                SetTreeNodeIcon(TN, "dir", ImgList);
                CurrTn.Nodes.Add(TN);
             
                // 遍历文件下的文件
                foreach (FileInfo File in aDir.GetFiles()) 
                {
                    TreeNode aNode = new TreeNode();
                    aNode.Text = File.Name;
                    aNode.Tag = File.FullName;
                    TN.Nodes.Add(aNode);
                    SetTreeNodeIcon(TN, File.Extension, ImgList);
                }
                ForLoadDirAndFiles(TN, aDir, ImgList);
            }
        }


        /// <summary>
        /// 设置节点的图标
        /// </summary>
        /// <param name="Tn">节点</param>
        /// <param name="strLX"></param>
        /// <param name="ImgList">图像</param>
        private void SetTreeNodeIcon(TreeNode Tn, string strLX,ImageList ImgList)
        {
             strLX = strLX.Replace('.',' ');
            if (strLX.ToLower() == "dir")  //目录
            {
                Tn.ImageIndex = ImgList.Images.IndexOfKey("close");
                Tn.SelectedImageIndex = ImgList.Images.IndexOfKey("open");
            }
            else
            {
                Tn.ImageIndex = ImgList.Images.IndexOfKey(strLX.Trim());
                Tn.SelectedImageIndex = ImgList.Images.IndexOfKey(strLX.Trim());
            }
        }
        #endregion

         #region 加载文件夹到树 

        /// <summary>
        /// 加载文件夹
        /// </summary>
        /// <param name="TV">TreeView</param>
        /// <param name="DirPath">要加载的文件夹路径</param>
        /// <param name="ImgList">ImageList</param>
        /// <returns></returns>
        public bool LoadDirectories(TreeView TV, string DirPath,ImageList ImgList)
        {
            try
            {
                TV.Nodes.Clear();
                TV.ImageList = ImgList;
                foreach (DirectoryInfo Dir in new DirectoryInfo(DirPath).GetDirectories())
                {
                    TreeNode TN = new TreeNode();
                    TN.Text = Dir.Name;
                    TN.Tag = Dir.FullName;
                    SetTreeNodeIcon(TN, "Dir", ImgList);
                    TV.Nodes.Add(TN);

                    ForLoadDirs(TN, Dir, ImgList);
                }
                return true;
            }
            catch
            {
                return false;
            }
        }

        /// <summary>
        /// 递归文件夹
        /// </summary>
        /// <param name="Tn"></param>
        /// <param name="Dir"></param>
        /// <param name="ImgList"></param>
        private void ForLoadDirs(TreeNode Tn, DirectoryInfo Dir, ImageList ImgList)
        {
            foreach (DirectoryInfo directory in Dir.GetDirectories())
            {
                TreeNode t = new TreeNode();
                t.Text = directory.Name;
                t.Tag = directory.FullName;
                SetTreeNodeIcon(Tn, "dir", ImgList);
                Tn.Nodes.Add(t);
                ForLoadDirs(t, directory, ImgList);
            }
        }
        #endregion
分享到:
评论

相关推荐

    C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载

    全书分6篇共25章,主要内容有C#开发环境的使用、C#语言基础应用、字符串处理技术、数组和集合的使用、面向对象编程技术、数据结构与算法、Windows窗体基础、特色窗体界面、窗体控制技术、MDI窗体和继承窗体、Windows...

    详解在DevExpress程序中使用TreeList控件以及节点查询的处理

    在一般Winform开发的情况下,可以使用微软的TreeView控件,也可以使用DevExpress的TreeList控件进行数据的展示,本篇随笔主要介绍基于DevExpress的TreeList控件使用以及使用SearchControl对节点进行查询的操作。...

    windows应用高级编程-C#编程篇

    3.2.2 TreeView控件和ListView控件 3.2.3 Splitter控件 3.2.4 DataTimePicker控件 3.2.5 MonthCalendar控件 3.3 控制光标外观 3.4 小结 第4章 菜单和工具栏 4.1 菜单控件和类 4.1.1 创建主菜单 4.1.2 创建上下文菜单...

    ASP.NET 2.0+SQL Server 2005全程指南-源代码

    9.2.3 使用DetailsView控件操作一条记录 9.2.4 使用FormView控件更新和插入数据 9.3 本章小结 高级篇 第10章 导航与登录 10.1 站点导航 10.1.1 Menu控件 10.I.2 SiteMapPath控件 10.1.3 TreeView控件 10.2 ...

    Visual C# 2005程序设计自学手册 随书源码第一部分(共三部)

    8.8.2 应用TreeView控件 194 8.8.3 应用PictrueBox控件 197 8.8.4 应用NotifyIcon控件 200 8.8.5 应用DateTimePicker控件 202 8.8.6 应用MonthCalendar控件 204 8.8.7 应用ToolTip控件 206 8.8.8 应用...

    Visual Basic 6编程技术大全 中译本扫描版带书签 2/2

    10.2 TreeView控件353 10.2.1设置设计时属性353 10.2.2运行时操作354 10.2.3先进的技巧358 10.3 ListView控件365 10.3.1设置设计时属性365 10.3.2运行时操作367 10.4 Toolbar控件374 10.4.1设置设计时属性375 10.4.2...

    Visual Basic 6编程技术大全 中译本扫描版带书签 1/2

    10.2 TreeView控件353 10.2.1设置设计时属性353 10.2.2运行时操作354 10.2.3先进的技巧358 10.3 ListView控件365 10.3.1设置设计时属性365 10.3.2运行时操作367 10.4 Toolbar控件374 10.4.1设置设计时属性375 10.4.2...

    asp.net知识库

    Asp.net 2.0功能体验,细节之Web控件(一) 隐藏控件 Asp.net 2.0功能体验,总体设计思想 Asp.net 2.0 WebPart使用经验点滴 革新:.NET 2.0的自定义配置文件体系初探 关于如何在ASP.NET 2.0中定制Expression ...

    VC实现炫眩qq界面的模拟(附源码)

    界面换肤 美化 异形窗口 vista 样式 透明窗体 自绘控件 vc vb delphi 编程 源码 代码 例子 磨沙 半透明 开发包 免费 破解 button dialog frame XP 下载 自绘按钮 菜单 标题栏 滚动条 listctrl treeview listview ...

    vfp6.0系统免费下载

    在新版的 Microsoft ActiveX ListView 控件及 Treeview 控件中已可以支持复选框。这些控件都包含在 Visual FoxPro 6.0 中(请参阅问题 2-7)。 问题 2-7: 我的 Visual FoxPro 5.0 表单中包含有 ListView 或 ...

    Delphi 7 新概念百例

    内容如下:├─综合应用篇│ ├─87 用TreeView来显示数据库信息│ ├─86 显示彩色数据表格│ ├─85 文件切割器│ ├─84 加密解密器│ ├─83 TButton增加OnMouseLeave事件│ ├─82 将IE收藏夹导出为HTML文件│ ...

Global site tag (gtag.js) - Google Analytics