In this blog we will learn how to display the File System Directories in
TreeView and display the Files in the Directory selected.
Screenshot
Snippet
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace WindowsExplorer
{
public partial class Form1 : Form
{
TreeNode ParentNode;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
treeView1.ImageList = imageList1;
foreach (DriveInfo driveInfo in DriveInfo.GetDrives())
{
if (driveInfo.IsReady)
{
ParentNode = treeView1.Nodes.Add(driveInfo.Name);
ParentNode.ImageIndex = 0;
LoadDirectories(ParentNode, driveInfo.Name);
}
}
treeView1.ExpandAll();
}
private void LoadDirectories(TreeNode parentNode, string Path)
{
TreeNode childNode;
DirectoryInfo dir
= new DirectoryInfo(Path);
foreach (DirectoryInfo di in dir.GetDirectories())
{
childNode = parentNode.Nodes.Add(di.Name);
childNode.ImageIndex = 1;
}
}
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
try
{
if (e.Action
== TreeViewAction.ByMouse)
{
DirectoryInfo dir
= new DirectoryInfo(treeView1.SelectedNode.FullPath);
listView1.Items.Clear();
foreach (FileInfo files in dir.GetFiles())
{
ListViewItem item
= new ListViewItem(files.Name);
item.ImageIndex = 2;
this.listView1.Items.Add(item);
}
}
}
catch (UnauthorizedAccessException Uex)
{
MessageBox.Show(Uex.Message);
}
catch (System.IO.IOException ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
Explanation
private void Form1_Load(object sender, EventArgs e)
{
treeView1.ImageList = imageList1;
foreach (DriveInfo driveInfo in DriveInfo.GetDrives())
{
if (driveInfo.IsReady)
{
ParentNode = treeView1.Nodes.Add(driveInfo.Name);
ParentNode.ImageIndex = 0;
LoadDirectories(ParentNode, driveInfo.Name);
}
}
treeView1.ExpandAll();
}
In the
form load event, we get the list of drive in the system using "DriveInfo" class
and adding the drives to the treenode if the drive is ready. The Tree view's
ImageList property is assigned to the Image list control which contains a
collection of Images.
Then, using the LoadDirectories Method we populate the directories in the
specified file system drives.
private void LoadDirectories(TreeNode parentNode, string Path)
{
TreeNode childNode;
DirectoryInfo dir = new DirectoryInfo(Path);
foreach (DirectoryInfo di in dir.GetDirectories())
{
childNode = parentNode.Nodes.Add(di.Name);
childNode.ImageIndex = 1;
}
}
To list
the files available in the selected directory I have coded the "AfterSelect"
event of the Treeview Control.
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
try
{
if (e.Action == TreeViewAction.ByMouse)
{
DirectoryInfo dir = new DirectoryInfo(treeView1.SelectedNode.FullPath);
listView1.Items.Clear();
foreach (FileInfo files in dir.GetFiles())
{
ListViewItem item = new ListViewItem(files.Name);
item.ImageIndex = 2;
this.listView1.Items.Add(item);
}
}
}
}
Thanks for Reading.