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); }
效果展示图: