场景

Winform中DevExpress的TreeList的入门使用教程(附源码下载):

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100075677

https://www.cnblogs.com/badaoliumangqizhi/p/11412053.html

在上面实现给TreeList赋值的基础上,将其数据源更改为本地某路径下的所有文件和目录。

效果

实现

在原来的节点类中添加节点类型属性,该属性是枚举类型。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace DevExpressSimple
{class TreeNode{//标识Idprivate string id;//父级节点IDprivate string parentId;//节点显示文本private string nodeText;private TreeNodeTypes nodeType = TreeNodeTypes.Folder;public TreeNodeTypes NodeType{get { return nodeType; }set { nodeType = value; }}public string NodeText{get { return nodeText; }set { nodeText = value; }}public string ParentId{get { return parentId; }set { parentId = value; }}public string Id{get { return id; }set { id = value; }}}
}

然后新建枚举类TreeNodeType

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace DevExpressSimple
{public enum TreeNodeTypes{/// <summary>/// 文件夹/// </summary>Folder = 0,/// <summary>/// 文件/// </summary>File = 1}
}

然后新建工具类TreeListHelper,用来将目录转换成节点对象并添加到数据源。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace DevExpressSimple
{class TreeListHelper{public static List<TreeNode> ParseDir(string dataRootDir, List<TreeNode> data){//如果传递的list为空,则新建一个if (data == null){data = new List<TreeNode>();}//如果目录不存在则直接原样将data返回if (!System.IO.Directory.Exists(dataRootDir)){return data;}TreeNode node = null;//创建目录对象System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(dataRootDir);//使用数组接收目录下的所有目录System.IO.DirectoryInfo[] subDirs = dir.GetDirectories();//循环每个目录foreach (System.IO.DirectoryInfo subDir in subDirs){//新建节点对象node = new TreeNode();//节点的Id取当前目录的名字node.Id = subDir.Name;//节点的父级ID 取上层目录的名字node.ParentId = dir.Name;//节点要显示的文本也取当前目录的名字node.NodeText = subDir.Name;//节点类型为文件夹node.NodeType = TreeNodeTypes.Folder;//将当前节点添加到list数据源data.Add(node);//因为是文件夹,所以需要迭代当前方法 并将当前目录作为参数重新传递 直到迭代完所有文件夹//这里使用FullName方法  获取全路径ParseDir(subDir.FullName, data);}//遍历完文件夹之后 遍历 文件//使用FileInfo的GetGiles方法 获取所有文件System.IO.FileInfo[] subFiles = dir.GetFiles();//遍历所有文件foreach (System.IO.FileInfo subFile in subFiles){node = new TreeNode();node.Id = subFile.Name;node.ParentId = dir.Name;node.NodeText = subFile.Name;node.NodeType = TreeNodeTypes.File;data.Add(node);}//返回数据源return data;}}
}

再回到原来窗体加载的代码中设置数据源list的地方。

 //新建list数据源List<TreeNode> data = new List<TreeNode>();//data.Add(new TreeNode() { Id = "root", ParentId = String.Empty, NodeText = "测试1" });// data.Add(new TreeNode() { Id = "first", ParentId = "root", NodeText = "测试2" });//将指定目录下的所有文件以及文件夹封装成节点对象并添加到listdata = TreeListHelper.ParseDir(@"E:\test", data);//添加根节点 Id属性对应根目录的名字, 父级Id为空  节点显示的文本 为 “所有文本”  节点类型为 文件夹data.Add(new TreeNode() { Id = "test", ParentId = String.Empty, NodeText = "所有文件", NodeType = TreeNodeTypes.Folder });

完整示例代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace DevExpressSimple
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){string keyFieldName = "Id";string parentFieldName = "ParentId";//新建list数据源List<TreeNode> data = new List<TreeNode>();//data.Add(new TreeNode() { Id = "root", ParentId = String.Empty, NodeText = "测试1" });// data.Add(new TreeNode() { Id = "first", ParentId = "root", NodeText = "测试2" });//将指定目录下的所有文件以及文件夹封装成节点对象并添加到listdata = TreeListHelper.ParseDir(@"E:\test", data);//添加根节点 Id属性对应根目录的名字, 父级Id为空  节点显示的文本 为 “所有文本”  节点类型为 文件夹data.Add(new TreeNode() { Id = "test", ParentId = String.Empty, NodeText = "所有文件", NodeType = TreeNodeTypes.Folder });//添加单列DevExpress.XtraTreeList.Columns.TreeListColumn colNode = new DevExpress.XtraTreeList.Columns.TreeListColumn();//设置名字colNode.Name = "名字";//设置标题colNode.Caption = "标题";//设置从数据源分配给当前列的字段名。colNode.FieldName = "NodeText";//设置树列表中显示当前列的位置。colNode.VisibleIndex = 0;//是否可见colNode.Visible = true;//是否允许编辑colNode.OptionsColumn.AllowEdit = false;//是否允许移动   colNode.OptionsColumn.AllowMove = false;//是否允许移动至自定义窗体    colNode.OptionsColumn.AllowMoveToCustomizationForm = false;//是否允许排序colNode.OptionsColumn.AllowSort = false;//是否固定列宽        colNode.OptionsColumn.FixedWidth = false;//是否只读        colNode.OptionsColumn.ReadOnly = true;//移除列后是否允许在自定义窗体中显示colNode.OptionsColumn.ShowInCustomizationForm = true;          //先清除列this.treeList1.Columns.Clear();//将列数组添加到集合的结尾。this.treeList1.Columns.AddRange(new DevExpress.XtraTreeList.Columns.TreeListColumn[] { colNode });this.treeList1.OptionsView.ShowColumns = false;             //隐藏列标头this.treeList1.OptionsView.ShowIndicator = false;           //隐藏节点指示器面板this.treeList1.OptionsView.ShowHorzLines = false;           //隐藏水平表格线this.treeList1.OptionsView.ShowVertLines = false;           //隐藏垂直表格线this.treeList1.OptionsView.ShowIndentAsRowStyle = false;#region 绑定数据源//设置属性KeyFieldName  ParentFieldName//设置一个值,该值指定绑定到XtratreeList控件的数据源的键字段this.treeList1.KeyFieldName = keyFieldName;//设置一个值,该值表示标识此数据源中父记录的数据源字段。this.treeList1.ParentFieldName = parentFieldName;this.treeList1.DataSource = data;//刷新数据this.treeList1.RefreshDataSource();#endregion}}
}

这里指定的目录是E盘下的test目录,在test下新建一些目录和文件。

示例源码下载

https://download.csdn.net/download/badao_liumang_qizhi/11614756

Winforn中DevExpress的TreeList中显示某路径下的所有目录和文件(附源码下载)相关推荐

  1. Web 开发中很实用的10个效果【附源码下载】

    在工作中,我们可能会用到各种交互效果.而这些效果在平常翻看文章的时候碰到很多,但是一时半会又想不起来在哪,所以养成知识整理的习惯是很有必要的.这篇文章给大家推荐10个在 Web 开发中很有用的效果,记 ...

  2. 美!视差滚动在图片滑块中的应用【附源码下载】

    视差滚动(Parallax Scrolling)已经被广泛应用于网页设计中,这种技术能够让原本平面的网页界面产生动感的立体效果.下面分享的这个图片滑块效果是难得一见的结合视差滚动的例子,之前的文章给大 ...

  3. 美!视差滚动特效在图片滑块中的应用【附源码下载】

    视差滚动(Parallax Scrolling)已经被广泛应用于网页设计中,这种技术能够让原本平面的网页界面产生动感的立体效果.下面分享的这个图片滑块效果是难得一见的结合视差滚动的例子,之前的文章给大 ...

  4. HTML5期末大作业:中韩美食加盟网站设计——中韩美食加盟网站(22页) H关于食品的网页设计作页源码下载DW大学生网页大作业网页设计

    HTML5期末大作业:中韩美食加盟网站设计--中韩美食加盟网站(22页) H关于食品的网页设计作页源码下载DW大学生网页大作业网页设计 常见网页设计作业题材有 个人. 美食. 公司. 学校. 旅游. ...

  5. Winform中DevExpress的TreeList的入门使用教程(附源码下载)

    场景 Winform控件-DevExpress18下载安装注册以及在VS中使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1 ...

  6. Winforn中实现ZedGraph自定义添加右键菜单项(附源码下载)

    场景 Winform中实现ZedGraph中曲线右键显示为中文: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100115292 ...

  7. Winform中实现ZedGraph的多条Y轴(附源码下载)

    场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...

  8. C#中实现一个TreeGridView(树形表格)附源码下载

    场景 效果 示例源码下载 https://download.csdn.net/download/badao_liumang_qizhi/11593399 实现 新建一个Winform程序,然后在页面上 ...

  9. Silverlight4中右键菜单实现-附源码下载

    在发布Silverlight4 Beta版本和RC时 增加不少新的特性和控件. 类似在WinForm实现右键菜单ContentMenu功能. 在Silverlight 4中也有所体现. 当初在Silv ...

最新文章

  1. Java 2程序设计,Java2程序设计
  2. 2021CCF颁奖典礼首次多平台网络直播,致敬获得者!CCF杰出工程师
  3. 数据库事务原理及并发、死锁
  4. django错误参考
  5. Android system server之WatchDog看门狗分析
  6. CS起源pointermap找基址+工具函数测试
  7. 安装错误 服务尚未启动_原创 | 西门子300软件安装出错处理大全
  8. Vue.js2.0核心思想
  9. 如何在ASP.NET Core中使用SignalR构建与Angular通信的实时通信应用程序
  10. Java常见面试知识点:继承、接口、多态、代码块
  11. IDEA远程调试Tomcat
  12. 【Unity面板属性扫盲】导入纹理后设置Texture Import Settings
  13. vcs -xprop的理解
  14. JSD-2204-Session-Token-JWT-Day12
  15. 产品研发细腰形架构1/2:产品技术体系的细腰形架构
  16. 抽奖摇号系统随机性算法介绍
  17. Bugku,Web:各种绕过哟
  18. 10分钟教你用python打造贪吃蛇超详细教程
  19. 数学不好 学软件测试能学会吗,英语差、数学烂,我还能学好编程吗?
  20. excel数据平均分配给多人_如何将excel表格中的一列数字平均分配成几组,分组后每组的平均值大致相同...

热门文章

  1. Zeal工具下载Elasticsearch离线文档
  2. 命令注入_命令注入绕过方式总结 (20210111学习笔记)
  3. JAVA--网络编程
  4. linux系统自带python_Linux删除系统自带版本Python过程详解
  5. C++获取Windows密码复杂度、密码有效期、密码锁定阀值等安全策略
  6. 无法安装驱动程序此计算机上不存在,11.2.4 “安装程序没有找到安装在此计算机上的硬盘驱动器”问题 (1)...
  7. windows云服务器价格_服务器windows2008价格
  8. 苹果手机home键在哪里_苹果手机为什么没有返回键?原来隐藏着更好的方法,涨知识了...
  9. ppt讲解html,HTML讲解解读.ppt
  10. java环境的意义_java环境变量配置的意义