微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 根据内容过滤OpenFileDialog中显示的文件?

有没有办法修改OpenFileDialog的行为,以便它查看它打开的文件夹中的文件内部,然后根据其内容忽略某些文件

一个例子是打开一个充满Zip文件文件夹,但只显示包含某个文件文件夹.

从文档中,有HookProc,但我不确定我是如何使用它的.

请注意,如果可能,我意识到这将是一个相对缓慢的操作.目前我并不关心性能.

谢谢!

解决方法

我不会忽视OpenFileDialog的复杂性.构建一个真正有用的东西并不容易.当您构建自己的对话框时,它不是“正常”对话框,因此会使用户感到困惑.即使你做得很好也是如此,这很难.所以我建议你坚持扩展现有的东西,而不是写一些新东西.

检查可能/可能被调整的this article for an extension of OFD以完全按照您的要求进行操作.你在C#中编写了一个响应路径选择的回调函数.

相关:FolderBrowserDialogEx是FolderbrowserDialog上的类似扩展.尽管名称如此,您可以将其配置为搜索文件以及文件夹.当选择某个(文件夹,文件)时会调用回调,并且在该回调中您可以执行您需要执行的操作.例如,查看文件夹中的文件并填充文件列表以仅显示这些文件.

您可能考虑的另一个选项是dialog library from Ookii.这是OpenFileDialog的开源实现,它包含Vista中所有新对话框内容的COM包装器.使用该库,您可以弹出Vista OpenFileDialog并使用C#代码IFileDialogEvents界面接收事件.一个这样的事件是OnFolderChange().在处理程序中,您可以调用IFolder.GetFolder(),它将为您提供IShellItem,它将为您提供用户正在更改的文件夹.下一步是逐项列出并可能过滤文件集,这是我将留给读者的练习……

原文地址:https://www.jb51.cc/csharp/99274.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐