0

我有一个需要在所有 Windows 平台上运行的 Windows 应用程序。我最近安装了 Windows API 代码包并将文件夹浏览器替换为“CommonOpenFileBrowser”。这很好,直到我尝试在出现异常的 Windows XP 机器上运行我的程序:

PlatformNotSupportedException,CommonOpenFileDialog 需要 vista 或更高版本。

我想继续为 vista 及更高版本使用 CommonOpenFileDialog,但是如果它在运行时检测到 Windows XP 操作系统,是否可以恢复到旧的文件夹浏览器?

更多想法:

我可以使用以下方法检测我的操作系统:

// 如果 Windows Vista 或更高版本
if (Environment.OSVersion.Version.Major >= 6)

但异常发生在启动时,甚至在显示 CommonOpenFileDialog 之前。我听说过一些关于动态加载代码的事情,但我对此知之甚少。

4

1 回答 1

0

所以事实证明我一直都有解决方案。我所要做的就是:

 if (Environment.OSVersion.Version.Major >= 6)
 {
     var openCommonDialog = new CommonOpenFileDialog();
 }
 else 
 {
     var openFileDialog = new FolderBrowserDialog();
 }

我在启动时崩溃的原因是 CommonOpenFileDialog 是在 Designer.cs 文件中实例化的。一旦这被删除,我的修复工作。

于 2015-01-22T17:01:33.707 回答