C#使用不同的文件系统打开/保存文件对话框

C#使用不同的文件系统打开/保存文件对话框,c#,winforms,filesystems,openfiledialog,savefiledialog,C#,Winforms,Filesystems,Openfiledialog,Savefiledialog,我喜欢标准的windows打开和保存文件对话框,但是,我使用它的特定应用程序是一个远程文件系统(基本上,我希望以某种方式提供一个IFileSystem接口来保存文件对话框,让它神奇地改变我提供的文件所看到的文件)。有人知道支持此功能的对话框的完整实现吗?有没有办法用标准的C#/windows对话框实现这一点 如果没有,我将自己实现这个对话框。我仍然喜欢这些对话框的实现所需的任何资源,即使它们不支持此功能,只是为了我可以将它们拆开并自己添加该功能 谢谢 这些类是对本机Windows shell a

我喜欢标准的windows打开和保存文件对话框,但是,我使用它的特定应用程序是一个远程文件系统(基本上,我希望以某种方式提供一个IFileSystem接口来保存文件对话框,让它神奇地改变我提供的文件所看到的文件)。有人知道支持此功能的对话框的完整实现吗?有没有办法用标准的C#/windows对话框实现这一点

如果没有,我将自己实现这个对话框。我仍然喜欢这些对话框的实现所需的任何资源,即使它们不支持此功能,只是为了我可以将它们拆开并自己添加该功能


谢谢

这些类是对本机Windows shell api函数调用的非常精简的包装。GetOpenFileName()适用于XP及更早版本,适用于Vista及更高版本的IFileOpenDialog COM接口。如果在资源管理器中看不到文件系统,那么这些包装将毫无用处。

这些类是对本机Windows shell api函数调用的非常精简的包装。GetOpenFileName()适用于XP及更早版本,适用于Vista及更高版本的IFileOpenDialog COM接口。如果在资源管理器中看不到文件系统,那么这些包装器将毫无用处。

唯一的选择是实现您自己的Shell名称空间扩展。它可能注册为“我的电脑”子驱动器,因此看起来像另一个驱动器。
注意:这是一项乏味的工作,而且由于.NET framework的限制(唯一的选择是实现您自己的Shell命名空间扩展。它可能注册为“我的电脑”子驱动器,因此看起来像另一个驱动器。
注意:这是一项乏味的工作,而且是由于.NET框架的限制(难道你不能让这个其他文件系统被shell识别,这样文件对话框就可以免费工作吗?难道你不能让这个其他文件系统被shell识别,这样文件对话框就可以免费工作吗?我认为4.0之前的限制只是你不能并排加载不同版本的CLR,所以你仍然可以编写一个托管exteDinsion,但它被困在使用资源管理器中可能已经运行的CLR的情况下运行?这正是我所说的限制。这看起来几乎正是我想要的。虽然理想情况下,我不能浏览除此之外的任何内容,但我会看看是否有办法隐藏所有其他内容,或者干脆拒绝来自该位置的文件。感谢link!@dzendras-如果这是限制,那么你就不必使用C/C++,你只需要限制已经加载的CLR。大多数情况下,这意味着你不能使用C#/CLR 4,因为其他东西已经加载了v2 CLR。不是这样吗?是的。但是如果应用程序需要.NET 4.0(或更新版本)的话然后就没有问题了:我认为4.0之前的限制只是你不能并行加载不同版本的CLR,所以你仍然可以编写一个托管扩展,但是它被困在了运行在资源管理器中可能已经运行的任何CLR上?这正是我所说的限制。这看起来几乎和我所说的完全一样ant。虽然理想情况下我只能浏览其他内容,但我会看看是否有办法隐藏其他内容,或者只是拒绝来自该位置的文件。感谢链接!@dzendras-如果这是限制,那么你就不必使用C/C++,你只需限制已加载的CLR。大多数情况下,这意味着你不能使用C#/CLR 4,因为其他东西已经加载了v2 CLR。不是这样吗?是的。但是,如果应用程序需要.NET 4.0(或更新版本),则没有问题: