Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 根据内容过滤OpenFileDialog中显示的文件?_C#_Wpf_Openfiledialog - Fatal编程技术网

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

C# 根据内容过滤OpenFileDialog中显示的文件?,c#,wpf,openfiledialog,C#,Wpf,Openfiledialog,是否有办法修改OpenFileDialog的行为,使其查看打开到的文件夹中的文件,然后根据其内容忽略某些文件 一个例子是打开一个装满Zip文件的文件夹,但只显示包含某个文件的文件夹 从文档中可以看到HookProc,但我不确定如何使用它 请注意,如果可能的话,我意识到这将是一个相对缓慢的操作。目前我并不关心表现 谢谢 不,您必须为此实现自己的功能。但是说实话,OpenFileDialog实际上并没有做很多事情。老实说,是的,你也许可以使用它,但是如果真正的工作是检查文件的内容,然后你可以在上面编

是否有办法修改OpenFileDialog的行为,使其查看打开到的文件夹中的文件,然后根据其内容忽略某些文件

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

从文档中可以看到HookProc,但我不确定如何使用它

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


谢谢

不,您必须为此实现自己的功能。但是说实话,OpenFileDialog实际上并没有做很多事情。老实说,是的,你也许可以使用它,但是如果真正的工作是检查文件的内容,然后你可以在上面编写你自己的简单的OpenFileDialog类,那么你会白白做很多工作

您可能会发现这个问题对于列出zip文件的内容很有帮助:


(注意,您可以通过线程来提高性能,但不要跨越太多线程)

我不会忽略OpenFileDialog的复杂性。要建立一个真正有效的系统并不容易。当您构建自己的对话框时,它不是“正常”对话框,因此会混淆用户。这是真的,即使你做得很好,这是困难的。所以我建议你坚持扩展已经存在的东西,而不是写一些新的东西

检查是否可能/可以调整以完全满足您的要求。有一个用C#编写的回调函数,它响应路径选择

相关:是FolderBrowserDialog上的类似扩展。不管名称如何,您都可以将其配置为搜索文件和文件夹。当选择某个对象(文件夹、文件)时,会调用一个回调,在该回调中,您可以执行需要执行的操作。例如,查看文件夹中的文件,并填充文件列表以仅显示这些文件



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

您可能可以使用Windows API代码包(随源代码提供)。与Winforms/WPF中的版本相比,Common File dialogs特性公开了更多的文件对话框功能


查看这些库的源代码,这些库具有用于WPF和Windows窗体的文件夹浏览器对话框的自定义实现