TreeList 遍历磁盘

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)
        {

        }
    }
}

 

posted @ 2016-12-16 16:56  刀小爱  阅读(654)  评论(0)    收藏  举报