树节点

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

原文地址:https://www.cnblogs.com/liujianshe1990-/p/5125881.html