[[tree2]]
 
    // using System.Windows.Forms;
    class MyNode : TreeNode
    {
        public string path;
        public bool ready = false;
    }
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace Strom
{
        private void showItems (MyNode branch,
                                DirectoryInfo dir,
                                int level)
        {
            try
            {
                DirectoryInfo[] list = dir.GetDirectories();
                branch.ready = true;
                if (list != null)
                    foreach (DirectoryInfo entry in list)
                        showBranch (branch.Nodes, entry, level - 1);
            }
            catch (Exception ex)
            {
                TreeNode node = new TreeNode();
                node.Text = ex.Message;
                node.ForeColor = Color.Red;
                branch.Nodes.Add (node);
            }
        }
 
        private void showBranch (TreeNodeCollection above,
                                 DirectoryInfo dir,
                                 int level)
        {
            MyNode branch = new MyNode();
            branch.Text = dir.Name;
            branch.path = dir.FullName;
            branch.ToolTipText = branch.path;
            above.Add(branch);
 
            if (level > 1)
                showItems (branch, dir, level-1);
        }
 
        private void testButton_Click(object sender, EventArgs e)
        {
            // using System.IO;
            treeView1.ShowNodeToolTips = true;
 
            DriveInfo[] disks = DriveInfo.GetDrives();
            foreach (DriveInfo d in disks)
               showBranch (treeView1.Nodes, d.RootDirectory, 2);
        }
 
        private void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e)
        {
            MyNode node = e.Node as MyNode;
            if (node != null)
            {
                if (node.ready)
                {
                    foreach (TreeNode n in node.Nodes)
                        if (n is MyNode)
                        {
                            MyNode sub = n as MyNode;
                            if (! sub.ready)
                            {
                                DirectoryInfo dir = new DirectoryInfo(sub.path);
                                showItems (sub, dir, 1);
                            }
                        }
                }
                else
                {
                    // DirectoryInfo dir = new DirectoryInfo(node.path);
                    // showItems (node, dir, 2);
                }
            }
        }
 
        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            listView1.Items.Clear();
            listView1.ShowItemToolTips = true;
            MyNode node = e.Node as MyNode;
            if (node != null)
            {
                DirectoryInfo dir = new DirectoryInfo (node.path);
                try
                {
                    FileInfo[] files = dir.GetFiles();
                    if (files != null)
                        foreach (FileInfo f in files)
                        {
                            ListViewItem item = new ListViewItem();
                            item.Text = f.Name;
                            item.ToolTipText = f.FullName;
                            item.SubItems.Add ("" + f.Length);
                            item.SubItems.Add ("" + f.LastWriteTime);
                            item.Tag = f.FullName;
                            listView1.Items.Add(item);
                        }
                }
                catch (Exception ex)
                {
                }
            }
        }
 
tree2.txt · Last modified: 2014/11/24 14:48 by 147.32.8.115
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki