是否有修改的OpenFileDialog的行为,使其看起来它打开该文件夹中的文件里,然后忽略特定的一些基于其内容的方式?

一个例子是打开一个完整的Zip文件的文件夹,但只显示包含某个文件的人。

从文档,还有的HOOKPROC,但我不完全知道我怎么会使用它。

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

谢谢!

有帮助吗?

解决方案

我不会驳回的的OpenFileDialog的复杂性。这不是那么容易建立一个真正的作品。当你建立你自己的,它不是“正常”的对话框,因此它混淆用户。这是真实的,即使你做得很好,这是困难的。所以,我建议你坚持扩大什么已经存在,而不是写一些新的东西。

检查为OFD 的扩展,可能/可能是扭捏做的正是你想要的。还有,你在响应路径选择C#编写的回调。

相关: FolderBrowserDialogEx 是上的FolderBrowserDialog类似扩展。尽管名字,你可以配置它来搜索文件,以及文件夹。有选择的东西(文件夹,文件)时被调用的回调,而回调中,你可以做你需要做什么。例如,偷看里面的文件夹内,并填充文件的列表,只有这些文件显示。


您可以考虑另一种选择是对话框,从中Ookii 库。这是打开文件对话框的一个开源实现,它包括在Vista中所有的新对话框东西COM包装。使用库,您可以弹出一个Vista的打开文件对话框,并接收来自 IFileDialogEvents 接口,在C#代码。一个这样的事件是OnFolderChange()。在处理程序,你可以调用IFolder.GetFolder(),这将让你的的的IShellItem ,它给你的用户更改文件夹。下一步将详细列举和潜在过滤文件集,这是一个锻炼,我会留给读者...

其他提示

没有,你就必须实现自己来实现该功能。不过说实话,在打开文件对话框真的没有做了一大堆呢。说实话,是啊,你很可能钩到它,但你会做了很多工作,白白当真正的工作是检查文件的内容,然后你可以写在上面自己的简单OpenFileDialog类这一点。

您可能会发现有关上市的zip文件内容这一问题有所帮助:

如何列出的内容在c#的.zip文件夹?

(注意,你可能线程它来提高性能,只是不跨越多个线程)

您也许可以使用Windows API代码包(随源)。通用文件对话框的功能暴露比版本的WinForms / WPF文件对话框了更多的功能。

http://code.msdn.microsoft.com/WindowsAPICodePack

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top