利用TreeView控件和ImageList控件显示我的电脑的结构目录:我的电脑-驱动器-文件夹,程序运行结果如下图所示。
程序代码如下。
using System; using System.IO; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace eg30_useTreeView { public partial class FolderDialog : Form { public FolderDialog() { InitializeComponent(); } private void ForderTree_AfterSelect(object sender, TreeViewEventArgs e) { if (e.Node.Text.ToString() != "我的电脑") EnumDirectories(e.Node); else EnumDrives(e.Node); } private void EnumDrives(TreeNode ParentNode) { if (ParentNode.Nodes.Count == 0) { foreach (string drive in Directory.GetLogicalDrives()) { FolderTree.SelectedNode = ParentNode; TreeNode TempNode = new TreeNode(); TempNode.Text = drive.Substring(0, drive.Length - 1); TempNode.Tag = drive; TempNode.ImageIndex = 1; TempNode.SelectedImageIndex = 1; FolderTree.SelectedNode.Nodes.Add(TempNode); FolderTree.SelectedNode.Nodes[FolderTree.SelectedNode.Nodes.Count - 1].EnsureVisible(); } } } private void EnumDirectories(TreeNode ParentNode) { FolderTree.SelectedNode = ParentNode; string DirectoryPath = ParentNode.Tag.ToString(); if (ParentNode.Nodes.Count == 0) { if (DirectoryPath.Substring(DirectoryPath.Length - 1) != @"\") DirectoryPath += @"\"; try { foreach (string directory in Directory.GetDirectories(DirectoryPath)) { TreeNode TempNode = new TreeNode(); TempNode.Text = directory.Substring(directory.LastIndexOf(@"\") + 1); TempNode.Tag = directory; TempNode.ImageIndex = 3; TempNode.SelectedImageIndex = 2; FolderTree.SelectedNode.Nodes.Add(TempNode); FolderTree.SelectedNode.Nodes[FolderTree.SelectedNode.Nodes.Count - 1].EnsureVisible(); } } catch (Exception) { } } } } }