using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;namespace DirinfoNode
{
    public partial class Dnodes : Form
    {
        public Dnodes()
        {
            InitializeComponent();
        }
        private void Addchildnode(TreeNode pareentnode)
        {
            DirectoryInfo dirinfo = (DirectoryInfo)pareentnode.Tag;
            try 
            {
                foreach (DirectoryInfo dir in dirinfo.GetDirectories())
                {
                    TreeNode node = new TreeNode();
                    node.Text = dir.Name;
                    node.Tag = dir;
                    pareentnode.Nodes.Add(node);
                }            }
            catch(Exception)
            {
            }        }
        private void Dnodes_Load(object sender, EventArgs e)
        {
            DriveInfo[] drive = DriveInfo.GetDrives();
            try
            {
                foreach(DriveInfo dr in drive)
            {
            
                TreeNode rootnode = new TreeNode();
                rootnode.Text=dr.Name;
                rootnode.Tag = new DirectoryInfo(dr.Name);
                tvwnode.Nodes.Add(rootnode);
                Addchildnode(rootnode);
            }            }
            catch(Exception)
            {
            }
        }        private void tvwnode_AfterExpand(object sender, TreeViewEventArgs e)
        {
            foreach (TreeNode node in e.Node.Nodes)
            {
                if (node.Nodes.Count == 0)
                {
                    Addchildnode(node);
                }
            }
            
        }        private void tvwnode_AfterSelect(object sender, TreeViewEventArgs e)
        {
            try
            {
                foreach (TreeNode node in e.Node.Nodes)
                {
                    if(node.Nodes.Count==0)
                    { Addchildnode(node); }
                }
            DirectoryInfo dirinfo = (DirectoryInfo)e.Node.Tag;
            
            lvwnode.Items.Clear();
           
                foreach (DirectoryInfo dir in dirinfo.GetDirectories())
                {
                    ListViewItem item = new ListViewItem();
                    item.ImageIndex = 0;
                    item.Text = dir.Name;
                    item.SubItems.Add("");
                    item.SubItems.Add("文件夹");
                    item.SubItems.Add(dir.LastWriteTime.ToString());
                    lvwnode.Items.Add(item);                }
            }
            catch(Exception ex)
            { MessageBox.Show(ex.Message); }
        }
    }
}