Open / SaveFileDialog类与它们在WPF表单中的使用之间的区别

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

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在Windows Vista中有问题有关吗?

提前致谢。

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

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


虽然他们基本上做同样的事情……他们是不同的包装器……围绕WIN32function。

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

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

如果您想要更新版本的“通用”文件对话框(例如Windows 7样式对话框),您可以使用“Windows API代码包”(其中一些已经转换为.NET 4):

那么,你选择哪一个取决于你的需求….如果你没有做任何自定义,那么你可以逃脱Windows.Forms之一。

注意使用Windows.Forms会使用额外的DLL使应用程序膨胀。