private void zimulu(TreeNode node)//在点开节点的一瞬间,解析当前目录的第三级目录
{
try//对错误或者权限不作处理
{
//根据获得的完整目录得到该目录下的子目录
foreach (var dirinfor in new DirectoryInfo(node.Tag.ToString()).GetDirectories())
{ //依据目录的完整目录获取其子目录,否则找不到文件
//以子目录的文件名为名称创建树节点
var n = new TreeNode(dirinfor.Name);
n.Tag = dirinfor.FullName;//将子目录的完整目录传给创建的树节点,
//使所有的子目录都有完整目录,
//便于调用此函数解析当前节点的第三级目录时,
//能够得到子目录完整目录
node.Nodes.Add(n);//将创建的树节点添加到当前目录分配的树节点的集合中,子目录形成
}
}
catch { }
}
private void Form1_Load(object sender, EventArgs e)
{
foreach (var diver in Environment.GetLogicalDrives())//获取操作平台的驱动器名称
{
var node = new TreeNode(diver);//依据驱动器的目录创建第一级树节点
node.Tag = diver;//将驱动器的完整目录赋给第一级节点
tvwfile.Nodes.Add(node);//将创建的节点添加到tvwfile分配的树节点的集合中
zimulu(node);//调用该函数,解析当前节点下的子目录
}
}
private void tvwfile_BeforeExpand(object sender, TreeViewCancelEventArgs e)
{
foreach (TreeNode node in e.Node.Nodes/*操作节点下的子目录集合*/)//遍历操作节点下的子目录集合
{
zimulu(node);//调用该函数,当前的子目录具有完整目录
}
}
private void tvwfile_BeforeCollapse(object sender, TreeViewCancelEventArgs e)
{
foreach (TreeNode node in e.Node.Nodes)
{
node.Nodes.Clear();//当点击折叠的一瞬间,除当前节点外,其所有的子目录全部关闭
//其子目录不会清空,但是其第三级目录已被清空
}
}
private void tvwfile_BeforeSelect(object sender, TreeViewCancelEventArgs e)
{
listView1.Items.Clear();
try
{
//获取该完整目录下所有的文件和子目录
foreach (var file in new DirectoryInfo(e.Node.Tag.ToString()).GetFileSystemInfos())
{
var f = new ListViewItem(file.Name);
f.SubItems.Add(file.LastAccessTime.ToLocalTime().ToString());
listView1.Items.Add(f);//将读取的所有文件和文件夹添加到该集合中
}
}
catch { }
}
//左边空白区域是treeview Dock是left 中间黑线是splitter Dock是left 右边是listview Dock是fill view是details