场景

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
{
//标识Id
private string id;
//父级节点ID
private 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 = ,
/// <summary>
/// 文件
/// </summary>
File =
}
}

然后新建工具类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" });
//将指定目录下的所有文件以及文件夹封装成节点对象并添加到list
data = 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" });
//将指定目录下的所有文件以及文件夹封装成节点对象并添加到list
data = 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 = ;
//是否可见
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. 使用DevExpress的PdfViewer实现PDF打开、预览、另存为、打印(附源码下载)

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

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

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

  3. Android中Canvas绘图基础详解(附源码下载) (转)

    Android中Canvas绘图基础详解(附源码下载) 原文链接  http://blog.csdn.net/iispring/article/details/49770651   AndroidCa ...

  4. arcgis api 3.x for js 解决 textSymbol 文本换行显示(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

  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. 转:Web 开发中很实用的10个效果【附源码下载】

    原文地址:http://www.cnblogs.com/lhb25/p/10-useful-web-effect.html 在工作中,我们可能会用到各种交互效果.而这些效果在平常翻看文章的时候碰到很多 ...

  9. 微信小程序中如何实现分页下拉加载?(附源码)

    转眼间坚持写教你微信小程序系列已经有十节系列课程了,每天的工作压力繁重,小女子也不知道自己还能坚持这样的系列教程多久.只希望每篇教程真的对大家有帮助.这节课我们要介绍的就是如何实现分页的下拉加载,我们 ...

随机推荐

  1. java Timer工具类实现定时器任务

    第一 schedule 方法 三个参数 按照顺序 (执行的任务方法,开始执行时间,多少时间后循环去执行)  代码可用 public class TestScheedule { public stati ...

  2. CheckListBox怎样得到多选值?

    一般认为:foreach (object obj in checkedListBox1.SelectedItems)即可遍历选中的值.其实这里遍历的只是高亮的值并不是打勾的值.遍历打勾的值要用下面的代 ...

  3. 前端小知识-html5

    一.伪类与伪元素 为什么css要引入伪元素和伪类:是为了格式化文档树以外的信息,也就是说,伪类和伪元素是用来修饰不在文档树中的部分 伪类用于当已有元素处于的某个状态时,为其添加对应的样式,这个状态是根 ...

  4. Unity进阶之ET网络游戏开发框架 04-资源打包

    版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...

  5. notepad 写html乱码,已解决

    写一些简单基础的html文件时,突然发现新建的demo2,在浏览器打开乱码,而昨天的demo1打开没乱码,真奇怪,开始排查原因. 1.检查代码,,设了charset=UTF-8,看不出毛病. 2.索性 ...

  6. Mina各组件介绍

    Mina各组件介绍 上一篇文章已经系统的介绍了Mina的运行流程,Apache推出的Mina性能上很是高效,上章节我们知道内部有很多的类,各个类之间的依赖也是很多,他们之家都是相互依赖. 下面主要看看 ...

  7. 从0开始学Git——Git的协同操作

    环境: test_git 目录下有个my-project 版本库 所有命令都在test_git目录下执行 本地协同操作 从远端仓库检出代码,或者克隆一个已有的版本库 拷贝一个已有的仓库 #格式: gi ...

  8. 开发APP必须知道的API集合,来源http://www.cnblogs.com/wikiki/p/7232388.html

    笔记 OneNote - OneNote支持获取,复制,创建,更新,导入与导出笔记,支持为笔记添加多媒体内容,管理权限等.提供SDK和Demo. 为知笔记 - 为知笔记Windows客户端开放了大量的 ...

  9. 原型工具介绍———墨刀以及Axure RP比较

    原型工具——墨刀以及Axure的比较 1759233 目录 一.了解背景... 1 二.下面分开介绍一下这两款工具... 1 2.1 Axure RP. 1 2.2墨刀... 6 三.比较... 8 ...

  10. 第一篇 特征提取以及openvslam中的相关实现详解

    参考尺度空间理论 金字塔 当用一个机器视觉系统分析未知场景时,计算机没有办法预先知道图像中物体尺度,因此,我们需要同时考虑图像在多尺度下的描述,获知感兴趣物体的最佳尺度.所以在很多时候,我们会在将图像 ...