很好奇,但只是想知道是否有人知道使用之间的区别:
System.Windows.Forms.SaveFileDialog(在 Assembly System.Windows.Forms.dll 中)和 Microsoft.Win32.SaveFileDialog(在 Assembly PresentationFramework.dll 中)?
我在 WPF 表单中使用 PresentationFramework.dll 版本,但目前正在重新使用表单中的一些旧代码,其中包括显示 System.Windows.Forms.dll 版本并想知道是否:
- 它们的外观有细微差别吗?
- 使用 System.Windows.Forms.SaveFileDialog 有任何互操作性问题吗?还是这两个都只是 win32 对话框?
- 这是否仅与使用 Microsoft.Win32.SaveFileDialog 有关 issues在 Windows Vista 中?
提前致谢。
最佳答案
这里有一个更好的解释(可能已过时/与更高版本的 .NET 无关):
http://www.thomasclaudiushuber.com/blog/2008/04/12/vistas-savefiledialog-and-openfiledialog-in-wpf/
虽然它们本质上做同样的事情...它们是不同的包装...围绕 WIN32 功能。
http://rpelepei.blogspot.co.uk/2010/01/using-open-file-dialog-window-in-wpf.html (请参阅为什么要使用 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/