public partial class frmTree : Form
{
public frmTree()
{
InitializeComponent();
FillTreeDirectories(tvwDirectory);
} private void FillTreeDirectories(TreeView tvwDirectory)
{
//throw new Exception("The method or operation is not implemented.");
string[] StrDrivers = Environment.GetLogicalDrives(); //读目录 foreach(string Driver in StrDrivers)
{
//if (Driver != @"D:\")
//{
// continue;
//}
if (Driver == @"D:\")
{
TreeNode rootDir = new TreeNode(Driver); //节点
tvwDirectory.Nodes.Add(rootDir);
GetSubDirectories(rootDir,rootDir.Text);
}
} } private void GetSubDirectories(TreeNode ParentNode, string FullName)
{
//throw new Exception("The method or operation is not implemented.");
DirectoryInfo dir = new DirectoryInfo(FullName);
DirectoryInfo[] SubDirs=dir.GetDirectories();
foreach (DirectoryInfo SubDir in SubDirs)
{
if ((SubDir.Attributes & FileAttributes.Hidden) != 0)
{
continue;
} TreeNode subNode = new TreeNode(SubDir.Name);//FulName 目录名
GetSubDirectories(subNode,SubDir.FullName); //FullName 目录名
ParentNode.Nodes.Add(subNode);
}
} private void tvwDirectory_AfterSelect(object sender, TreeViewEventArgs e)
{
lvwFiles.Items.Clear();
string Path = e.Node.FullPath;
txtPath.Text = Path.Remove(2,1);
DirectoryInfo dir = new DirectoryInfo(Path);
FileInfo [] Files=dir.GetFiles();
foreach(FileInfo file in Files)
{
lvwFiles.Items.Add(file.Name);
}
}
}
{
public frmTree()
{
InitializeComponent();
FillTreeDirectories(tvwDirectory);
} private void FillTreeDirectories(TreeView tvwDirectory)
{
//throw new Exception("The method or operation is not implemented.");
string[] StrDrivers = Environment.GetLogicalDrives(); //读目录 foreach(string Driver in StrDrivers)
{
//if (Driver != @"D:\")
//{
// continue;
//}
if (Driver == @"D:\")
{
TreeNode rootDir = new TreeNode(Driver); //节点
tvwDirectory.Nodes.Add(rootDir);
GetSubDirectories(rootDir,rootDir.Text);
}
} } private void GetSubDirectories(TreeNode ParentNode, string FullName)
{
//throw new Exception("The method or operation is not implemented.");
DirectoryInfo dir = new DirectoryInfo(FullName);
DirectoryInfo[] SubDirs=dir.GetDirectories();
foreach (DirectoryInfo SubDir in SubDirs)
{
if ((SubDir.Attributes & FileAttributes.Hidden) != 0)
{
continue;
} TreeNode subNode = new TreeNode(SubDir.Name);//FulName 目录名
GetSubDirectories(subNode,SubDir.FullName); //FullName 目录名
ParentNode.Nodes.Add(subNode);
}
} private void tvwDirectory_AfterSelect(object sender, TreeViewEventArgs e)
{
lvwFiles.Items.Clear();
string Path = e.Node.FullPath;
txtPath.Text = Path.Remove(2,1);
DirectoryInfo dir = new DirectoryInfo(Path);
FileInfo [] Files=dir.GetFiles();
foreach(FileInfo file in Files)
{
lvwFiles.Items.Add(file.Name);
}
}
}
但也存在严重的性能问题,你在程序运行后就load了所有的目录及子目录,
我的D盘目录很多,就会导致程序没响应,等很久才能运行出来。
刚开始应该只load根目录下的目录,在用户点击的时候,再进入下一层目录。
这种文件夹对话框的源码,网上有的,你可以搜一下。