110,534
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Windows.Forms;
using System.IO;
namespace WindowsExplorer
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_SizeChanged(object sender, EventArgs e)
{
this.tscAdress.Width = this.toolStrip2.Width - 90;
}
private void Form1_Load(object sender, EventArgs e)
{
TreeNode Mycomputer = this.treeView1.Nodes[0];
DriveInfo[] drivers = DriveInfo.GetDrives();
//循环添加我的电脑的子节点
foreach (DriveInfo driver in drivers)
{
TreeNode node = new TreeNode(driver.Name);
node.ImageKey = "drive.png";
node.SelectedImageKey = "drive.png";
node.Tag = driver.RootDirectory.FullName;
Mycomputer.Nodes.Add(node);
//添加到listView
this.listView1.Items.Add(new ListViewItem(new string[] { driver.Name, "磁盘", "", "" }, "drive.png"));
}
}
/// <summary>
/// 添加被选中项的子节点
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void treeView1_AfterExpand(object sender, TreeViewEventArgs e)
{
foreach (TreeNode node in e.Node.Nodes)
{
DirectoryInfo driver = new DirectoryInfo(node.Tag.ToString());
DirectoryInfo[] subdrivers = null;
//跳过无访问权限的文件
try { subdrivers = driver.GetDirectories(); }
catch (UnauthorizedAccessException) { }
catch (IOException) { }
if (subdrivers != null)
{
foreach (DirectoryInfo subdriver in subdrivers)
{
TreeNode subNode = new TreeNode(subdriver.Name);
subNode.ImageKey = "folder_add.png";
subNode.SelectedImageKey = "folder.png";
subNode.Tag = subdriver.FullName;
node.Nodes.Add(subNode);
}
}
}
}
/// <summary>
/// 列表显示
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{//地址栏显示
if (e.Action == TreeViewAction.ByKeyboard || e.Action == TreeViewAction.ByMouse)
{
if (e.Node.Tag == null)
{
this.tscAdress.Text = e.Node.Text;
}
else
{
this.tscAdress.Text = e.Node.Tag.ToString();
}
}
this.listView1.Items.Clear();
if (e.Node.Tag != null)
{
string path = e.Node.Tag.ToString();
DirectoryInfo folder = new DirectoryInfo(path);
//填充文件夹
DirectoryInfo[] subfolders = null;
try
{
subfolders = folder.GetDirectories();
}
catch (UnauthorizedAccessException)
{
}
if (subfolders != null)
{
foreach (DirectoryInfo subfolder in subfolders)
{
listView1.Items.Add(new ListViewItem(new string[] { subfolder.Name, "文件夹", "", "" }, "folder.png"));
}
}
//填充文件
try
{
FileInfo[] files = folder.GetFiles();
foreach (FileInfo file in files)
{
listView1.Items.Add(new ListViewItem(new string[] { file.Name, "文件", GetFileSize(file), file.LastWriteTime.ToString() }, "page.png"));
}
}
catch (UnauthorizedAccessException)
{ }
}
}
private void listView1_MouseDoubleClick(object sender, MouseEventArgs e)
{
try
{
string path = this.listView1.SelectedItems[0].Tag.ToString();
DirectoryInfo folder = new DirectoryInfo(path);
FileInfo[] files = folder.GetFiles();
this.listView1.Items.Clear();//清空列表
//填充文件夹
DirectoryInfo[] subfolders = folder.GetDirectories();
if (subfolders != null)
{
foreach (DirectoryInfo subfolder in subfolders)
{
listView1.Items.Add(new ListViewItem(new string[] { subfolder.Name, "文件夹", "", "" }, "folder.png"));
}
}
//填充文件
foreach (FileInfo file in files)
{
listView1.Items.Add(new ListViewItem(new string[] { file.Name, "文件", GetFileSize(file), file.LastWriteTime.ToString() }, "page.png"));
}
}
catch (UnauthorizedAccessException)
{ }
catch (NullReferenceException)
{ }
}
}
}
//load中 添加到listView
// this.listView1.Items.Add(new ListViewItem(new string[] { driver.Name, "磁盘", "", "" }, "drive.png"));
//没效果。
// listView1_MouseDoubleClick中string path = this.listView1.SelectedItems[0].Tag.ToString(); 出现异常
//新手求教。