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