首页 > 解决方案 > 从自定义树文件夹对话框中删除隐藏文件夹

问题描述

我使用 TreeView 制作了一个自定义树文件夹对话框。请访问链接以获取参考代码。

 public bool CreateTree(TreeView treeView)
    {
        bool returnValue = false;

        try
        {
            // Create Desktop
            TreeNode desktop = new TreeNode();
            desktop.Text = "Desktop";
            desktop.Tag = "Desktop";
            desktop.Nodes.Add("");
            treeView.Nodes.Add(desktop);
            // Get driveInfo
            foreach (DriveInfo drv in DriveInfo.GetDrives())
            {
                TreeNode fChild = new TreeNode();
                if (drv.DriveType == DriveType.CDRom) 
                {
                    fChild.ImageIndex = 1;
                    fChild.SelectedImageIndex = 1;
                }
                else if (drv.DriveType == DriveType.Fixed)
                {
                    fChild.ImageIndex = 0;
                    fChild.SelectedImageIndex = 0;
                }
                fChild.Text = drv.Name;
                fChild.Nodes.Add("");
                treeView.Nodes.Add(fChild);

                returnValue = true;
            }

        }
        catch (Exception ex)
        {
            returnValue = false;
            MessageBox.Show(ex.Message);
        }
        return returnValue;
    }

有什么方法可以从此对话框中删除 $ 文件夹(系统隐藏文件,如回收站)?任何帮助将是最明显的。

从自定义 TreeFolder 对话框中删除隐藏文件

标签: c#filedrive

解决方案


请添加将来用于您的问题的整个来源。

您可以通过利用 DirectoryInfo 和/或 FileInfo 对象上的 Attributes 属性来排除隐藏和/或系统文件夹。对于这组特定的源,您可以将以下逻辑添加到 EnumerateDirectory 方法。

Attributes.HasFlag 在 C# 4.0 及更高版本中可用。

public TreeNode EnumerateDirectory(TreeNode parentNode)
{
    ...

    foreach (DirectoryInfo dir in rootDir.GetDirectories())
    {
        if (dir.Attributes.HasFlag(FileAttributes.Hidden)) continue;

        ...
    }

    ...
}

推荐阅读