c# - Open/SaveFileDialog 类之间的区别及其在 WPF 窗体中的使用

标签 c# .net wpf winforms visual-studio-2010

很好奇,但只是想知道是否有人知道使用之间的区别:

System.Windows.Forms.SaveFileDialog(在 Assembly System.Windows.Forms.dll 中)和 Microsoft.Win32.SaveFileDialog(在 Assembly PresentationFramework.dll 中)?

我在 WPF 表单中使用 PresentationFramework.dll 版本,但目前正在重新使用表单中的一些旧代码,其中包括显示 System.Windows.Forms.dll 版本并想知道是否:

  1. 它们的外观有细微差别吗?
  2. 使用 System.Windows.Forms.SaveFileDialog 有任何互操作性问题吗?还是这两个都只是 win32 对话框?
  3. 这是否仅与使用 Microsoft.Win32.SaveFileDialog 有关 issues在 Windows Vista 中?

提前致谢。

最佳答案

这里有一个更好的解释(可能已过时/与更高版本的 .NET 无关):

http://www.thomasclaudiushuber.com/blog/2008/04/12/vistas-savefiledialog-and-openfiledialog-in-wpf/


虽然它们本质上做同样的事情...它们是不同的包装...围绕 WIN32 功能。

但是,SaveFileDialog 的 WPF (Microsoft.Win32) 版本中存在许多潜在错误。

如何扩展 WPF 打开/保存对话框:

如果您想要更多更新版本的“通用”文件对话框(例如 Windows 7 风格的对话框),您可以使用“Windows API 代码包”(其中一些已集成到 .NET 4 中):

因此,您选择哪一个取决于您的需要......如果您不进行任何自定义,那么您可以使用 Windows.Forms。

请注意,使用 Windows.Forms 会使您的应用程序因额外的 DLL 而膨胀一些。

关于c# - Open/SaveFileDialog 类之间的区别及其在 WPF 窗体中的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12315908/

相关文章:

c# - SQL 到 LINQ 的麻烦

.net - 有效的单元测试覆盖率(以及实际应该测试什么?)

c# - 手动调用 System.GC.Collect() 更改 Windows 窗体应用程序的操作

.net - 对启用useLegacyV2RuntimeActivationPolicy的影响?

c# - 在结构中分配字段/属性

c# - Microsoft WCF 测试客户端错误

c# - 基于文件系统的读取与简单的数据库查询?

c# - 如何将搜索到的项目滚动到 Wpf 中的 GridView View 中

wpf - 什么是父级可卡住?这个错误是什么意思?

wpf - 有没有办法知道 WPF 应用程序是否正在关闭?