using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Windows.Forms;
namespace Directories
{
class ListViewItemComparer : IComparer
{
private int col;
public ListViewItemComparer()
{
col = 0;
}
public ListViewItemComparer(int column)
{
col = column;
}
public int Compare(object x, object y)
{
ListViewItem a = (ListViewItem) x;
ListViewItem b = (ListViewItem) y;
return String.Compare (a.SubItems [col].Text, b.SubItems[col].Text);
}
}
}
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 Directories
{
public partial class Window : Form
{
public Window()
{
InitializeComponent();
treeView1.ShowNodeToolTips = true;
initTree ();
}
private void initTree ()
{
// var drives = DriveInfo.GetDrives ();
// foreach (var d in drives)
DriveInfo [] drives = DriveInfo.GetDrives ();
foreach (DriveInfo d in drives)
{
showBranch (treeView1.Nodes, d.RootDirectory.FullName);
}
}
MyNode showDirectory (TreeNodeCollection target, string path, string name)
{
MyNode node = new MyNode();
node.Text = name;
node.path = path;
node.ready = false;
node.ToolTipText = path;
target.Add (node);
return node;
}
void showSubdirs (MyNode node, DirectoryInfo dir)
{
try
{
DirectoryInfo[] subdirs = dir.GetDirectories();
foreach (DirectoryInfo d in subdirs)
showDirectory(node.Nodes, d.FullName, d.Name);
node.ready = true;
}
catch (Exception e)
{
node.ForeColor = Color.Red;
node.ToolTipText = node.ToolTipText + " : " + e.Message;
}
}
void showBranch (TreeNodeCollection target, string path)
{
DirectoryInfo dir = new DirectoryInfo (path);
MyNode node = showDirectory (target, dir.FullName, dir.Name);
showSubdirs (node, dir);
}
private void treeView1_BeforeExpand (object sender, TreeViewCancelEventArgs e)
{
foreach (TreeNode n in e.Node.Nodes)
{
MyNode node = n as MyNode;
if (node != null && ! node.ready)
{
DirectoryInfo dir = new DirectoryInfo (node.path);
showSubdirs (node, dir);
}
}
}
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
MyNode node = e.Node as MyNode;
if (node != null)
showFiles (node.path);
}
private void showFiles (string path)
{
listView1.Items.Clear ();
listView1.ShowItemToolTips = true;
try
{
DirectoryInfo dir = new DirectoryInfo (path);
statusLabel.Text = dir.FullName;
FileInfo[] files = dir.GetFiles();
int cnt = 0;
foreach (FileInfo f in files)
{
MyItem item = new MyItem();
item.Text = f.Name;
item.ToolTipText = f.FullName;
item.path = f.FullName;
//item.ImageIndex = cnt % imageList2.Images.Count;
cnt++;
item.SubItems.Add(f.Length.ToString("### ### ### ##0"));
item.SubItems.Add(f.LastWriteTime.ToString("yyyy-MM-dd HH:mm"));
listView1.Items.Add (item);
// statusLabel.Text += ", " + f.Name;
}
}
catch (Exception e)
{
ListViewItem item = new ListViewItem();
item.Text = e.Message;
listView1.Items.Add (item);
}
}
private void listView1_ColumnClick(object sender, ColumnClickEventArgs e)
{
listView1.ListViewItemSorter = new ListViewItemComparer (e.Column);
// e.Column.
}
private void listView1_DoubleClick(object sender, EventArgs e)
{
if (listView1.SelectedItems.Count == 1)
{
ListViewItem t = listView1.SelectedItems [0];
MyItem item = t as MyItem;
if (item != null)
showOneFile (item.path);
}
}
private void showOneFile (String path)
{
try
{
FileInfo f = new FileInfo (path);
string ext = f.Extension;
if (ext == ".bmp" || ext == ".jpeg" || ext == ".jpg")
{
pictureBox1.Image = new Bitmap (f.FullName);
tabControl1.SelectedTab = imagePage;
}
}
catch (Exception e)
{
}
}
}
}