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,它将为您提供用户正在更改的文件夹.下一步是逐项列出并可能过滤文件集,这是我将留给读者的练习……

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...