public partial class UserControl : Form
{
public UserControl()
{
InitializeComponent();
}
public void CreateTree(string str)
{
treeView1.Nodes.Clear();
DriveInfo driver = new DriveInfo(str);
TreeNode node = new TreeNode(driver.Name);
//判断驱动器类型,用不同图标显示
switch (driver.DriveType)
{
case DriveType.CDRom: //光驱
{
node.ImageIndex = 1;
node.SelectedImageIndex = 1;
break;
}
default: //默认,显示为磁盘图标
{
node.ImageIndex = 0;
node.SelectedImageIndex = 0;
break;
}
}
DirectoryInfo dir = driver.RootDirectory;
AddNode(dir, node);
this.treeView1.Nodes.Add(node);
}
//(列出当前目录下的子目录)
private void AddNode(DirectoryInfo dir, TreeNode node)
{
node.Nodes.Clear();
try
{
if (!Directory.GetAccessControl(dir.FullName).AreAccessRulesProtected)
{
DirectoryInfo[] dirs = dir.GetDirectories(); //得到当前目录下的子目录集
FileInfo[] files = dir.GetFiles();//得到当前目录下的文件集合
foreach (DirectoryInfo d in dirs)
{
TreeNode temp = new TreeNode(d.Name);
temp.ImageIndex = 2;
temp.SelectedImageIndex = 3;
AddNode(d, temp); //递归循环创建每一级菜单
node.Nodes.Add(temp);
}
foreach (FileInfo file in files)
{
TreeNode tempFile = new TreeNode(file.Name);
if (file.Extension == ".exe" || file.Extension == "") //程序文件或无扩展名
{
Icon fileIcon = GetSystemIcon.GetIconByFileName(file.FullName);
imageList1.Images.Add(file.Name, fileIcon);
tempFile.ImageKey = file.Name;
}
else //其它文件
{
if (!imageList1.Images.ContainsKey(file.Extension)) //ImageList中不存在此类图标
{
Icon fileIcon = GetSystemIcon.GetIconByFileName(file.FullName);
imageList1.Images.Add(file.Extension, fileIcon);
}
tempFile.ImageKey = file.Extension;
}
node.Nodes.Add(tempFile);
}
}
}
catch
{
}
}
private void UserControl_Load(object sender, EventArgs e)
{
//DriveInfo[] drivers = DriveInfo.GetDrives();
//foreach (DriveInfo dr in drivers)
//{D:/个人/Solution1/WindowsFormsApplication1/GetSystemIcon.cs
// comboBox1.Items.Add(dr.Name);
//}
//comboBox1.SelectedIndex= 0;
//CreateTree(comboBox1.Text);
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
CreateTree(comboBox1.Text);
}
}