using System.Windows.Forms;
namespace Soubory
{
public class MyTreeNode : TreeNode
{
public string path;
public bool scanned;
}
}
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;
namespace Soubory
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
showDisks();
}
private void testToolStripMenuItem_Click(object sender, EventArgs e)
{
showDisks();
}
private void showDisks ()
{
// using System.IO;
// using System.Windows.Forms;
DriveInfo [] drives = DriveInfo.GetDrives ();
// for (int i = 0; i < drives.Length; i++)
foreach (DriveInfo d in drives)
{
MyTreeNode node = new MyTreeNode ();
node.path = d.Name; // <--
node.Text = d.Name;
treeView1.Nodes.Add (node);
showDir (node, d.RootDirectory, 1); // <--
}
}
private void showDir (MyTreeNode above, DirectoryInfo dir, int level)
{
try
{
above.scanned = true; // <--
DirectoryInfo [] directories = dir.GetDirectories();
foreach (DirectoryInfo d in directories)
{
MyTreeNode node = new MyTreeNode();
node.path = d.FullName; // <--
node.Text = d.Name;
node.ToolTipText = d.FullName;
above.Nodes.Add (node);
if (level > 1)
showDir (node, d, level-1);
}
}
catch (Exception e)
{
/*
TreeNode node = new TreeNode();
node.Text = "" + e;
node.ForeColor = Color.Red;
above.Nodes.Add(node);
*/
}
}
private void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e)
{
MyTreeNode node = e.Node as MyTreeNode;
if (node != null)
rescanDir (node, 2);
}
private void rescanDir (MyTreeNode above, int level)
{
if (above.scanned)
{
if (level > 1)
foreach (MyTreeNode node in above.Nodes)
rescanDir (node, level-1);
}
else
{
showDir (above, new DirectoryInfo(above.path), level);
}
}
}
}