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;
using System.IO;
using DevExpress.XtraTreeList.Nodes;
using DevExpress.XtraTreeList.Columns;
namespace WindowsFormsApplication8
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private DevExpress.XtraTreeList.Columns.TreeListColumn tr;
private void button1_Click(object sender, EventArgs e)
{
// tr = new DevExpress.XtraTreeList.Columns.TreeListColumn();
// this.tr.Caption = "treeListColumn1";
// tr.FieldName = "treeListColumn1";
// tr.Name = "treeListColumn1";
//tr.Visible = true;
// tr.VisibleIndex = 0;
// treeList1.BeginUnboundLoad();
// treeList1.Columns.AddRange(new DevExpress.XtraTreeList.Columns.TreeListColumn[] {
// tr});
// treeList1.EndUnboundLoad();
treeList1.BeginUnboundLoad();
TreeListColumn c1 = new TreeListColumn();
c1.Caption = "treeListColumn1";
c1.FieldName = "treeListColumn1";
c1.VisibleIndex = 3; // 必须指定 否则不显示 该列
treeList1.Columns.Add(c1);
TreeListColumn c2 = new TreeListColumn();
c2.Caption = "treeListColumn2";
c2.FieldName = "treeListColumn2";
c2.VisibleIndex = 0;
treeList1.Columns.Add(c2);
TreeListColumn c3 = new TreeListColumn();
c3.Caption = "treeListColumn3";
c3.FieldName = "treeListColumn3";
c3.VisibleIndex = 1;
treeList1.Columns.Add(c3);
TreeListColumn c4 = new TreeListColumn();
c4.Caption = "treeListColumn4";
c4.FieldName = "treeListColumn4";
c4.VisibleIndex = 2;
treeList1.Columns.Add(c4);
treeList1.EndUnboundLoad();
treeList1.StateImageList = imageList1;
InitFolders(Directory.GetDirectoryRoot(Directory.GetCurrentDirectory()), null);
}
private void InitFolders(string path, TreeListNode PNode)
{
treeList1.BeginUnboundLoad();
TreeListNode node;
DirectoryInfo di;
try
{
string[] root = Directory.GetDirectories(path);
foreach (string item in root)
{
try
{
di = new DirectoryInfo(item);
node = treeList1.AppendNode(new object[] { item, di.Name, "Folder", null }, PNode);
node.StateImageIndex = 0;
node.HasChildren = HasFiles(item);
if (node.HasChildren)
{
node.Tag = true;
}
}
catch (Exception ex)
{
// throw;
// MessageBox.Show(ex.Message);
}
}
}
catch (Exception ex)
{
// MessageBox.Show(ex.Message);
}
InitFiles(path, PNode);
treeList1.EndUnboundLoad();
}
private void InitFiles(string path, TreeListNode pNode)
{
TreeListNode node;
FileInfo fi;
try
{
string[] root = Directory.GetFiles(path);
foreach (string item in root)
{
fi = new FileInfo(item);
node = treeList1.AppendNode(new object[] { item, fi.Name, "File", fi.Length }, pNode);
node.StateImageIndex = 1;
node.HasChildren = false;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private bool HasFiles(string s)
{
string[] root = Directory.GetFiles(s);
if (root.Length > 0)
{
return true;
}
root = Directory.GetDirectories(s);
if (root.Length > 0)
{
return true;
}
return false;
}
private void treeList1_BeforeExpand(object sender, DevExpress.XtraTreeList.BeforeExpandEventArgs e)
{
if (e.Node.Tag != null)
{
Cursor currentCursor = Cursor.Current;
Cursor.Current = Cursors.WaitCursor;
InitFolders(e.Node.GetDisplayText("treeListColumn1"), e.Node);
e.Node.Tag = null;
Cursor.Current = currentCursor;
}
}
private void treeList1_AfterExpand(object sender, DevExpress.XtraTreeList.NodeEventArgs e)
{
if (e.Node.StateImageIndex != 1) e.Node.StateImageIndex = 2;
}
private void treeList1_AfterCollapse(object sender, DevExpress.XtraTreeList.NodeEventArgs e)
{
if (e.Node.StateImageIndex != 1)
{
e.Node.StateImageIndex = 0;
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}