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