有没有办法修改 OpenFileDialog 的行为,以便它查看它打开的文件夹中的文件,然后根据其内容忽略某些文件?
一个示例是打开一个充满 Zip 文件的文件夹,但仅显示包含特定文件的文件夹。
从文档中,有 HookProc 但我不太确定如何使用它。
请注意,如果可能的话,我意识到这将是一个相对较慢的操作。目前我并不关心性能。
Thanks!
我不会忽视 OpenFileDialog 的复杂性。建立一个真正有效的系统并不容易。当您构建自己的对话框时,它不是“正常”对话框,因此会让用户感到困惑。即使你做得很好也是如此,这是困难的。因此,我建议您坚持扩展已有的内容,而不是编写新的内容。
Check 本文是 OFD 的扩展 http://www.codeproject.com/KB/dialog/OpenFileDialogEx.aspx这可能/可以进行调整以完全满足您的要求。您用 C# 编写了一个回调来响应路径选择。
有关的:文件夹浏览器对话框Ex http://dotnetzip.codeplex.com/SourceControl/changeset/view/29832#432677是FolderBrowserDialog 上的类似扩展。不管名称如何,您都可以将其配置为搜索文件和文件夹。当选择某些内容(文件夹、文件)时会调用一个回调,在该回调中您可以执行您需要执行的操作。例如,查看文件夹内的文件并填充文件列表以仅显示这些文件。
您可能考虑的另一个选择是Ookii 的对话框库 http://www.ookii.org/software/dialogs/。这是 OpenFileDialog 的开源实现,它包括 Vista 中所有新对话框内容的 COM 包装器。使用该库,您可以弹出 Vista OpenFileDialog 并接收来自IFileDialog事件 http://msdn.microsoft.com/en-us/library/bb775876.aspx接口,C# 代码。 OnFolderChange() 就是这样的事件之一。在处理程序中,您可以调用 IFolder.GetFolder() 这将为您提供外壳项目 http://msdn.microsoft.com/en-us/library/bb761144(VS.85).aspx,它为您提供用户要更改到的文件夹。下一步将是逐项列出并可能过滤文件集,这是我将留给读者的练习......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)