c# - 从自定义树文件夹对话框中删除隐藏文件夹
问题描述
我使用 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;
}
有什么方法可以从此对话框中删除 $ 文件夹(系统隐藏文件,如回收站)?任何帮助将是最明显的。
解决方案
请添加将来用于您的问题的整个来源。
您可以通过利用 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;
...
}
...
}
推荐阅读
- android - java.lang.ClassCastException:com.example.readdoang.ui.login_regist_activity.LoginRegistActivity 无法转换为 com
- javascript - 如何使 React 组件可以访问并且需要异步数据才能使用的变量?
- php - 如何修复此错误 Undefined offset: 1 in line 178
- c++ - 预提交时cpp中的memleak
- ruby-on-rails - 如何为 API 版本化模型验证?
- amazon-ec2 - 设置 Github 操作以在 EC2 上构建和部署 java 代码
- java - 为什么我不能从本地存储库导入 maven jar?
- tensorflow - Rasa 训练数据集
- javafx - JavaFX:标签与文本布局的区别
- javascript - JS 代码只在第一组文本的范围内换行,其余的不换行