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