【问题标题】:Keeping files in treeview, but having troubles with taking them out将文件保存在树视图中,但在取出文件时遇到问题
【发布时间】:2016-05-06 02:03:50
【问题描述】:

所以,我有一个 c# windows 窗体。 我将带有文件的根目录放到 TreeView 中

public void ProcessDirectory(string targetDirectory)
    {
        DirectoryInfo x = new DirectoryInfo(targetDirectory);
        treeView1.Nodes.Clear();
        treeView1.Nodes.Add(ProcessFiles(x));
    }

    private static TreeNode ProcessFiles(DirectoryInfo directoryInfo)
    {
        var directoryNode = new TreeNode(directoryInfo.Name);
        foreach (var directory in directoryInfo.GetDirectories())
            directoryNode.Nodes.Add(ProcessFiles(directory));
        foreach (var file in directoryInfo.GetFiles())
            directoryNode.Nodes.Add(new TreeNode(file.Name));
        return directoryNode;
    }

它们显示得很好。 但后来我尝试删除它们。

private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
    {
        ((TreeView)sender).SelectedNode = e.Node;
    }

    private void deleteToolStripMenuItem_Click(object sender, EventArgs e)
    {
        string path = ((TreeView)sender).SelectedNode.FullPath;
        FileInfo temp = new FileInfo(path);
        File.Delete(temp.Name);
    }

当我尝试将节点转换为文件时它崩溃了。 我认为我在过程中失去了原始根的路径,这导致了问题,但我不知道如何防止这种情况。如果在添加函数时我使用“FullName”而不是“Name”程序会显示每个显示文件的完整路径,但是当我尝试将它们转换为 FileInfo 变量时,它仍然会崩溃。 我该怎么办?

【问题讨论】:

    标签: c# winforms treeview


    【解决方案1】:

    您不能真正将FileInfo 对象直接添加为Nodes。构造函数需要一个string,并且您不能将该节点从该string 转换回FileInfo..

    我建议将FileInfo 添加到Node.Tag 属性中:

    foreach (var file in directoryInfo.GetFiles())
    {
        TreeNode node = directoryNode.Nodes.Add(new TreeNode(file.Name));
        node.Tag = file;
    }
    

    现在要删除一个,您可以像这样访问 FileInfo:

    FileInfo FI = someNode.Tag as FileInfo;
    

    确保有效后再处理:

    if (FI != null)         
    {
       // do your thing
    }
    

    【讨论】:

      猜你喜欢
      • 2013-10-20
      • 2023-03-22
      • 2016-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-28
      • 2017-07-21
      相关资源
      最近更新 更多