我有一个Windows应用程序,需要在Windows的所有平台上工作。我最近安装了Windows API Code Pack,并将文件夹浏览器替换为"CommonOpenFileBrowser"。这很棒,直到我尝试在Windows XP机器上运行我的程序,我得到了异常:
PlatformNotSupportedException,CommonOpenFileDialog 需要 vista 或更高版本。
我想继续使用CommonOpenFileDialog进行vista及以上版本,但是如果它在运行时检测到Windows XP操作系统,是否可以恢复到旧的文件夹浏览器?
更多想法:
我可以通过以下方式检测我的操作系统:
如果 Windows Vista 或更高版本
if (Environment.OSVersion.Version.Major>= 6)
但异常发生在启动时,甚至在显示 CommonOpenFileDialog 之前。我听说过一些关于动态加载代码的事情,但我对此几乎没有经验。
所以事实证明我一直有解决方案。我所要做的就是:
if (Environment.OSVersion.Version.Major >= 6)
{
var openCommonDialog = new CommonOpenFileDialog();
}
else
{
var openFileDialog = new FolderBrowserDialog();
}
我在启动时崩溃的原因是 CommonOpenFileDialog 是在设计器文件中实例化的.cs。删除后,我的修复程序就起作用了。