0

Windows のすべてのプラットフォームで動作する必要がある Windows アプリがあります。最近、Windows API Code Pack をインストールし、フォルダー ブラウザーを "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 に答える