使用ListView和TreeView列出文件夹和文件

时间:2014-12-18 21:32:27

标签: c# winforms treeview

我有一个包含两个控件(TreeView和ListView)的Windows窗体,我想显示TreeView中特定路径的所有目录,以及当用户点击{{1}中列出的任何目录时此目录的所有文件都显示在TreeView

那是我的代码:

在Form_Load事件处理程序中,我将所有目录从E Drive加载到treeView1

ListView

问题在于:

 private void Form1_Load(object sender, EventArgs e)
    {

        DirectoryInfo dInfo = new DirectoryInfo(@"E:\");
        foreach (DirectoryInfo d in dInfo.GetDirectories())
        {
            treeView1.Nodes[0].Nodes.Add(d.Name);
        }

    }

当任何正文点击treeView1中的任何目录时,代码会跳转到列出listView1中列出所有文件的内容。

异常消息:无法找到路径的一部分。

1 个答案:

答案 0 :(得分:0)

您需要向树节点添加一些数据。您可以将完整路径名放在Text中,方法是将代码更改为:

treeView1.Nodes[0].Nodes.Add(d.FullName);

或者,您可以使用Name,并将一些额外数据添加到Tag的{​​{1}}字段中。

TreeNode

然后,当您需要该目录的文件时,请编写:

var node = treeView1.Nodes[0].Nodes.Add(d.Name);
node.Tag = d;

如果您不想保留所有这些DirectoryInfo dInfo = (DirectoryInfo)e.Node.Tag; foreach (FileInfo f in dInfo.GetFiles()) ... 引用,可以将DirectoryInfo放在FullName字段中:

Tag

然后当你去检索文件时:

node.Tag = d.FullName;