无法使用 system.io 文件添加标签,因为我需要稍后在我的代码中将其转换为文件信息对象

Can't add a tag using system.io file, as i need it to be cast as a fileinfo object later in my code

文件 anode 的标记导致目录 anode 出错,这是因为它们是同一个吗?我还认为从标签到 fileinfo 对象的转换不起作用。关于如何将文件信息放入用户选择填充列表视图的节点的任何建议?

//see code below where attempts made to add tags
foreach (DirectoryInfo subDir in subDirs)
        {
            aNode = new TreeNode(subDir.Name, 0, 0);
            aNode.Tag = subDir;
            aNode.ImageKey = "Folder";
            aNode.ImageIndex = 0;
            aNode.SelectedImageIndex = 1;
            subSubDirs = subDir.GetDirectories();

            if (subSubDirs.Length != 0)
            {
                GetDirectories(subSubDirs, aNode);
            }

            //add files to treeview
            foreach (var file in subDir.GetFiles())
            {
                if(file.Name.Contains(".rfa"))
                {
                aNode.Nodes.Add(new TreeNode(file.Name)); 
           //cant add a tag to the file only to the directory
             aNode.Tag = file;               

                }
            }

            nodeToAddTo.Nodes.Add(aNode);
        }

1) 为了检查文件的扩展名,最好使用:

file.Extension.Equals(".rfa", StringComparison.OrdinalIgnoreCase);

2) 您正在修改 aNode 'Tag' 属性,这可能是导致您问题的原因,请尝试按如下方式修改它:

aNode.Nodes.Add(new TreeNode(file.Name){Tag=file});

3) 恕我直言,您不应将 FileInfo/DirectoryInfo 对象保留在 'Tag' 中,而应使用路径本身

4) 如果您只想在树视图中显示目录结构,请查看以下内容: [您可以轻松修改它以仅显示“.rfa”文件]