Winforn中DevExpress的TreeList中显示某路径下的所有目录和文件(附源码下载)
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                Winforn中DevExpress的TreeList中显示某路径下的所有目录和文件(附源码下载)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                場景
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中显示某路径下的所有目录和文件(附源码下载)的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Winform中DevExpress的T
- 下一篇: DevExpress的PdfViewer
