enum DriverImage
{
CDRom = 0,
Disk = 1,
USB = 2,
Folder = 3
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.AutoSizeMode = AutoSizeMode.GrowAndShrink;
this.Left = Screen.PrimaryScreen.WorkingArea.Width / 2 - this.Width / 2;
this.Top = Screen.PrimaryScreen.WorkingArea.Height / 2 - this.Height / 2;
}
private void initTreeMain()
{
//光驱
DriveInfo[] driveList = DriveInfo.GetDrives();
foreach (DriveInfo item in driveList)
{
TreeNode driverNode = null;
switch (item.DriveType)
{
case DriveType.Removable: //可移动磁盘
driverNode = SetDriverNode(item, (int)DriverImage.USB);
break;
case DriveType.Fixed: //硬盘
driverNode = SetDriverNode(item, (int)DriverImage.Disk);
break;
case DriveType.CDRom: //光盘
driverNode = SetDriverNode(item, (int)DriverImage.CDRom);
break;
default:
break;
}
}
//根据上面的节点寻找目录
foreach (TreeNode node in treeMain.Nodes)
{
if (node.Tag.ToString() == "E:\\")
{
LoadTreeNodes(node);
}
}
}
/// <summary>
///
/// </summary>
/// <param name="item">根据item设置节点信息</param>
/// <param name="imageType">节点的图片索引类型</param>
/// <returns></returns>
TreeNode SetDriverNode(DriveInfo item, int imageType)
{
TreeNode driverNode = treeMain.Nodes.Add(item.VolumeLabel + "(" + item.Name.Split('\\')[0] + ")");
driverNode.ImageIndex = imageType;
driverNode.SelectedImageIndex = imageType;
driverNode.Tag = item.RootDirectory;
return driverNode;
}
/// <summary>
/// 绑定根节点中的文件夹
/// </summary>
/// <param name="node">根节点</param>
void LoadTreeNodes(TreeNode node)
{
DirectoryInfo directory = new DirectoryInfo(node.Tag.ToString());
DirectoryInfo[] infos = directory.GetDirectories();
foreach (DirectoryInfo info in infos)
{
//如果找到是隐藏,临时,系统。 则后面不执行。重新开始寻找
if (info.Attributes == FileAttributes.Hidden || info.Attributes == FileAttributes.Temporary || info.Attributes == FileAttributes.System)
{
continue;
}
if (info.Attributes == FileAttributes.Directory)
{
TreeNode childNode = node.Nodes.Add(info.Name);
childNode.ImageIndex = (int)DriverImage.Folder;
childNode.SelectedImageIndex = (int)DriverImage.Folder;
childNode.Tag = info.FullName;
LoadChildNodes(childNode);
}
}
}
//使用递归依次寻找其下
void LoadChildNodes(TreeNode node)
{
DirectoryInfo directory = new DirectoryInfo(node.Tag.ToString());
if (directory.FullName.Length > 240)
{
return;
}
DirectoryInfo[] infos = directory.GetDirectories();
foreach (DirectoryInfo info in infos)
{
TreeNode childNode = node.Nodes.Add(info.Name);
childNode.ImageIndex = (int)DriverImage.Folder;
childNode.SelectedImageIndex = (int)DriverImage.Folder;
childNode.Tag = info.FullName;
LoadChildNodes(childNode);
}
}