C# 本机文件打开/保存对话框(不带Windows窗体或WPF)

C# 本机文件打开/保存对话框(不带Windows窗体或WPF),c#,winapi,dllimport,openfiledialog,C#,Winapi,Dllimport,Openfiledialog,如何导入和使用本机打开文件对话框? 我在不使用Windows窗体或WPF的应用程序中使用它有什么好处吗?或者只是引用它?WinForms和WPF提供的标准文件对话框只是本地对话框的包装。因此,使用这些托管C#类最有意义 如果您希望以任何方式自定义对话框(例如向对话框添加控件),则可能需要使用本机API。但这主要是因为XP需要使用与Vista/7不同的定制技术。即使在纯本机代码中,自定义文件对话框也不是一件小事,如果合理的话,您应该避免这样做。这是您在应用程序中所做的事情。如果使用Windows窗

如何导入和使用本机打开文件对话框?
我在不使用Windows窗体或WPF的应用程序中使用它有什么好处吗?或者只是引用它?

WinForms和WPF提供的标准文件对话框只是本地对话框的包装。因此,使用这些托管C#类最有意义


如果您希望以任何方式自定义对话框(例如向对话框添加控件),则可能需要使用本机API。但这主要是因为XP需要使用与Vista/7不同的定制技术。即使在纯本机代码中,自定义文件对话框也不是一件小事,如果合理的话,您应该避免这样做。

这是您在应用程序中所做的事情。如果使用Windows窗体编写,请使用System.Windows.Forms.OpenFileDialog;如果是使用WPF编写的,请参见此处: 如果出于某种特殊原因,您必须反对Win32 api,请继续阅读GetOpenFileName:

中有通用对话框的包装器。Vista之前发布的一些Windows窗体和WPF版本在构建对话框时使用了一些参数,导致Vista(或Windows 7)说“哦,你知道你想要什么,我不会给你所有唱歌跳舞的对话框新版本。”从那时起,就有服务包、新版本等来处理这些问题。如果由于某些原因无法获得正确的对话框,请首先为您正在使用的Visual Studio的任何版本安装任何service Pack。如果你仍然没有得到满意,尝试代码包。< /P>如果不是WiFrm或WPF,应用程序的GUI基础是什么?或者您正在尝试从控制台应用程序打开对话框?mOGRE(3D应用程序)。我只想避免不必要的依赖项和加载,尽管我认为WPF<4可能显示了错误的打开/保存对话框,这就提出了问题。我知道WPF 4显示的是正确的。@BoltClock您的意思是WPF显然是正确的。有来自WPF早年的报告和报告;解决方法是使用WinForms命名空间中的类,而不是Microsoft.Win32+1如果问题是在Vista/7上显示旧文件对话框的WPF对话框,请及时了解托管包装器的最新信息