Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Open/SaveFileDialog类之间的差异及其在WPF表单中的使用_C#_.net_Wpf_Winforms_Visual Studio 2010 - Fatal编程技术网

C# Open/SaveFileDialog类之间的差异及其在WPF表单中的使用

C# Open/SaveFileDialog类之间的差异及其在WPF表单中的使用,c#,.net,wpf,winforms,visual-studio-2010,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版

很好奇,但我只是想知道是否有人知道使用:

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对话框
  • 这仅仅与在windows vista中使用Microsoft.Win32.SaveFileDialog有关吗

  • 提前感谢。

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


    虽然它们基本上做相同的事情…但它们是不同的包装器…围绕WIN32功能

    • (请参见为什么要使用Win32版本?)

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

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

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

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


    注意:使用Windows.Forms one会给应用程序增加一个额外的DLL。

    谢谢-这非常有用。到目前为止,我在我的WPF表单中发现使用这两种类型没有问题,我也不需要担心Vista,所以看起来我对大多数问题都免疫。我真的建议使用Windows API代码包。尝试一下它的功能。(例如,TaskDialog。为什么WPF的MessageBox.Show与Windows Vista/7/8相比如此难看?)?