![](/img/trans.png)
[英]Hiding hidden documents and excluding file extensions from a directory in C#
[英]Excluding file extensions from open file dialog in C#
我正在尝试在我的 C# openFileDialog 上放置一个过滤器,以排除某些文件扩展名。 例如,我希望它显示目录中不是 .txt 文件的所有文件。
有没有办法做到这一点?
我不认为这是可能的。 过滤器的设置方式是您可以选择要显示的文件,但我认为没有办法显示“除...之外的所有文件”。 想想看,你有没有在 Windows 中看到一个打开文件对话框有这个? 我想我从来没有见过一个。
最好的办法是让他们选择所有文件,然后提示用户是否选择了不允许的文件,或者将其过滤为您可以处理的所有可能文件。
使用 BCL OpenFileDialog 没有直接的方法来做到这一点。
我可以想到几个选项:
1) 制作一个只包含您想要支持的所有类型的过滤器。 这将是我的建议,因为这是进行此类操作的最常见方式。
2) 使用与此自定义 OpenFileDialog 实现类似的内容。 如果所选文件具有 .txt 扩展名,则您可以覆盖 OnFileNameChanged() 方法以潜在地禁用“打开”按钮。
3) 让用户选择一个 .txt 文件,抛出一个错误对话框,然后重新打开文件对话框。 不过,这对我来说感觉很笨重而且不太好......
通过 Google 搜索“OpenFileDialog”找到
编辑:很抱歉没有扩展 EXCLUDE 方面。 你可能不需要走到这个极端,但它会满足你的需求......
恐怕这是不可能的。 你要么必须
a) 包括一长串应该允许的所有扩展名,或
b) 允许所有扩展名,然后使用简单的签入代码,如果所选文件的扩展名是.txt
则重新打开对话框。
另外,您能否为这个问题提供更多背景信息? 我无法设想我可能明确需要排除某个扩展名的场景。 在几乎所有情况下,您可能无法仅使用过滤器(可能还有一些代码检查)就可以逃脱。
这是一种完全不同的方法,您不太可能使用它。
不使用 OpenFileDialog,而是分析您需要的特定功能并创建您自己的对话框。 您可以轻松地提供您想要的任何过滤,但随后困难就转移到了实现和维护新 UI 上。
我不建议你这样做,但有时用户会非常坚持他们需要什么。
另一个替代方案:不要使用对话框,而是想出一些完全不同的、适合应用程序的东西。 这可能是不可能的,但是我们对该应用程序了解不多。
您不能设置过滤器以从文件对话框中排除扩展名。
但是,您可以在对话框上为FileOk
事件实现一个委托。 此事件在用户选择的文件被接受之前触发,事件参数提供了一个Cancel
属性,您可以将其设置为禁止选择。
它不像实际上使错误的文件不可见那样优雅,但它允许您禁止选择错误类型的文件。
PS:不要忘记给用户反馈为什么文件不被接受,否则他们可能想知道为什么在选择“txt”文件时对话框没有关闭。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.