C# Open/SaveFileDialog 使用不同的文件系统
Posted
技术标签:
【中文标题】C# Open/SaveFileDialog 使用不同的文件系统【英文标题】:C# Open/SaveFileDialog with a different file system 【发布时间】:2012-05-13 18:43:07 【问题描述】:我希望打开标准窗口并保存文件对话框,但是,我使用它的特定应用程序是一个远程文件系统(基本上,我很想以某种方式为 SaveFileDialog 提供一个 IFileSystem 接口并拥有它神奇地改变我提供它们看到的文件)。有谁知道支持此功能的那些对话框的完整实现?有什么方法可以使用标准的 C#/windows 对话框吗?
如果没有,我将自己实现对话框。我仍然希望有任何资源来实现这些对话框,即使它们不支持此功能,这样我就可以将它们拆开并自己添加该功能。
谢谢!
【问题讨论】:
你不能让 shell 识别这个其他文件系统,以便文件对话框免费工作吗? 【参考方案1】:唯一的选择是实现您自己的 Shell 命名空间扩展。它可能被注册为“我的电脑”子项,因此它看起来像另一个驱动器。 注意:这是一项乏味的工作,并且由于 .NET 框架的限制(
Here 就是一个例子。
【讨论】:
我认为 4.0 之前的限制只是你不能并排加载不同版本的 CLR,所以你仍然可以编写托管扩展,但它被卡在运行任何东西CLR 可能已经在资源管理器中运行? 这正是我所说的限制。 这看起来几乎正是我想要的。尽管理想情况下我无法浏览除此之外的任何其他内容,但我会看看是否有办法隐藏其他所有内容,或者只是拒绝不在该位置的文件。感谢您的链接! @dzendras - 如果这是限制,那么您就没有必须使用 C/C++,您只限于已经加载的任何 CLR。大多数时候,这意味着您不能使用 C#/CLR 4,因为其他东西已经加载了 v2 CLR。不是这样吗? 是的。但是,如果应用程序需要 .NET 4.0(或更高版本),则没有问题:***.com/questions/3053876/…【参考方案2】:这些类是对本地 Windows shell api 函数的调用的非常薄的包装器。 GetOpenFileName() 用于 XP 及更早版本,IFileOpenDialog COM 接口用于 Vista 及更高版本。如果您在资源管理器中看不到文件系统,那么这些包装器将毫无用处。
【讨论】:
以上是关于C# Open/SaveFileDialog 使用不同的文件系统的主要内容,如果未能解决你的问题,请参考以下文章
在 C++ 中使用 C# 接口或在 C# 中使用 C++ 接口
如何使用 C# GUI 调用 C# 控制台应用程序 [重复]