public TreeForm()
{
InitializeComponent();
tree.ShowNodeToolTips = true;
tabControl.ShowToolTips = true;
tabControl.Controls.Clear ();
// using System.IO;
DriveInfo[] disks = DriveInfo.GetDrives();
foreach (var disk in disks)
{
// var d = new DirectoryInfo("../../../..");
// this.Text = d.FullName;
DirectoryInfo d = disk.RootDirectory;
MyNode branch = new MyNode();
branch.Text = d.Name;
branch.ToolTipText = d.FullName;
branch.ForeColor = Color.Orange;
branch.path = d.FullName;
branch.directory = true;
tree.Nodes.Add(branch);
displayDir(branch, d);
// branch.ExpandAll ();
// branch.Expand();
}
}
private void displayDir(MyNode target, DirectoryInfo dir, int level = 1)
{
try
{
DirectoryInfo[] items = dir.GetDirectories();
foreach (var item in items)
{
MyNode node = new MyNode();
node.Text = item.Name;
node.ToolTipText = item.FullName;
node.ForeColor = Color.Lime;
node.path = item.FullName;
node.directory = true;
target.Nodes.Add(node);
if (level > 1)
displayDir(node, item, level - 1);
}
FileInfo[] file_items = dir.GetFiles();
foreach (var item in file_items)
{
MyNode node = new MyNode();
node.Text = item.Name;
node.ToolTipText = item.FullName;
node.ForeColor = Color.Blue;
node.path = item.FullName;
target.Nodes.Add(node);
}
target.complete = true;
}
catch (Exception ex)
{
TreeNode node = new TreeNode();
node.Text = ex.Message;
node.ToolTipText = ex.StackTrace;
node.ForeColor = Color.Red;
target.Nodes.Add(node);
}
}
private void tree_BeforeExpand(object sender, TreeViewCancelEventArgs e)
{
TreeNode branch = e.Node;
foreach (TreeNode tree_item in branch.Nodes)
{
if (tree_item is MyNode)
{
MyNode item = tree_item as MyNode;
if (item.directory && !item.complete)
displayDir(item, new DirectoryInfo(item.path));
}
}
}
private void tree_DoubleClick (object sender, EventArgs e)
{
// tabControl.ShowToolTips = true;
// tabControl.Controls.Clear ();
TreeNode tree_node = tree.SelectedNode;
if (tree_node is MyNode node)
{
// MyNode node = tree_node as MyNode;
if (!node.directory)
{
var fi = new FileInfo (node.path);
TabPage page = new TabPage();
page.Text = fi.Name;
page.ToolTipText = fi.FullName;
tabControl.Controls.Add(page);
string ext = fi.Extension;
switch (ext)
{
case ".txt":
case ".h":
case ".c":
case ".cpp":
case ".pas":
TextBox edit = new TextBox();
edit.Multiline = true;
edit.Dock = DockStyle.Fill;
edit.Text = File.ReadAllText (node.path);
page.Controls.Add (edit);
break;
case ".png":
case ".bmp":
case ".jpg":
case ".jpeg":
Panel picture = new Panel();
picture.BackgroundImage = new Bitmap(node.path);
picture.BackgroundImageLayout = ImageLayout.Stretch;
picture.Dock = DockStyle.Fill;
page.Controls.Add(picture);
break;
}
}
}
zip