Удаление скрытых папок из диалогового окна пользовательских папок - PullRequest
0 голосов
/ 26 мая 2018

Я создал пользовательское диалоговое окно «Папка дерева», используя TreeView.Visit эта ссылка для ссылочного кода.

 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;
    }

Есть ли способ удалить папки $ (системные скрытые файлы)как корзина) из этого диалога?Любая помощь будет наиболее заметной.

Remove Hidden Files from Custom TreeFolder Dialog

1 Ответ

0 голосов
/ 26 мая 2018

Пожалуйста, добавьте весь источник, который будет использоваться для вашего вопроса в будущем.

Вы можете исключить скрытые и / или системные папки, используя свойство Attributes в объектах DirectoryInfo и / или FileInfo.Для этого конкретного набора источников вы можете добавить приведенную ниже логику в метод EnumerateDirectory.

Attributes.HasFlag доступен в C # 4.0 и более поздних версиях.

public TreeNode EnumerateDirectory(TreeNode parentNode)
{
    ...

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

        ...
    }

    ...
}
...