1:首先自定义一个方法,方法参数是树状图的节点。作用(将所有文件目录绑定到该树状图的节点上,并且将文件的详细信息在listView控件上展示出来。)

 public void DataSource(TreeNode node)
        {
            try
            {
                tv_Info.SelectedNode.Nodes.Clear();
                DirectoryInfo di = new DirectoryInfo(node.Tag.ToString());
                //遍历选中节点代表的目录
                DirectoryInfo[] dis = di.GetDirectories();
                //循环绑定
                foreach (DirectoryInfo item in dis)
                {
                    TreeNode nodeTwo = new TreeNode();
                    nodeTwo.Text = item.Name;
                    nodeTwo.Tag = item.FullName;
                    node.Nodes.Add(nodeTwo);

                }
                //清空ListView 的控件的数据
                lv_info.Items.Clear();
                // List<FileLei> list = new List<FileLei>();
                //选中目录的所有文件
                FileInfo[] difiles = di.GetFiles();
                foreach (FileInfo item in difiles)
                {
                   
                    //创建一个项的对象并绑定数据
                    ListViewItem lvi = new ListViewItem(item.Name);
                    lvi.SubItems.Add((item.Length / 1024).ToString());
                    lvi.SubItems.Add(item.Extension.Substring(1));
                    lvi.SubItems.Add(item.FullName);

                    lv_info.Items.Add(lvi);

                }

            }
            catch (Exception)
            {

                MessageBox.Show("出错了!");
            }
}

2:在load事件中初始化盘符,默认成为D盘,Tag值也改为D盘

private void Frm_Menu_Load(object sender, EventArgs e)
        {

           
            //绑定TreeView 的根节点
            TreeNode node = new TreeNode("D:\\");
            //设置根节点相关路径
            node.Tag = "D:\\";
            tv_Info.Nodes.Add(node);

        } 

3:在TreeView控件的被选中事件中调用DataSource()方法,方法参数为被选中的节点。

//选中节点后的事件
        private void tv_Info_AfterSelect(object sender, TreeViewEventArgs e)
        {
         
            DataSource(tv_Info.SelectedNode);

        }

效果展示图: