0

winform アプリケーションでファイルを開くダイアログを表示する必要がありました。そして、ファイル ダイアログの 1 つのプロパティであるautoupgradeenabledをtrueに設定しました。これは、アプリケーションが xp で実行されている場合のように、オペレーティング システムに応じて開いているファイル ダイアログを更新するためのもので、ダイアログは wista またはウィンドウ 7 のように異なって表示されます。

そのため、そのプロパティをtrueとして使用すると、2.0 .net フレームワークの xpがあったマシンでファイルを開くダイアログを開くことができませんでした。だから私はそれを偽にしてみましたが、xpおよび2.0フレームワークを備えたマシンで開くこともできませんでした。

次に、行全体がコードからそのプロパティを削除したことを意味することをコメントしてみました。それから試してみましたが、2.0フレームワークのXPマシンでは問題ありませんでした。したがって、問題は、そのプロパティを false または true に設定して機能しない理由を理解できないことです。そのプロパティを設定することにより、すべてのフレームワークですべての OS で動作し、OS に応じてダイアログを変更する必要があるためです。そうでない場合、そのプロパティの意味は何ですか?

4

1 に答える 1

1

AutoUpgradeEnabledプロパティが .NET 2.0 SP1 まで追加されなかったため、機能しませんでした。

そのプロパティのドキュメントには、サポートされているバージョンが次のようにリストされています。

.NET Framework: バージョン 4、3.5 SP1、3.0 SP1、2.0 SP1
.NET Framework クライアント プロファイル: バージョン 4、3.5 SP1

バージョン 2.0 SP1 より前では、新しい Windows Vista スタイルのダイアログを使用してOpenFileDialogとが自動的に表示されていました。プロパティSaveFileDialogでこれをオプトアウトする機能は、後になって追加されました。AutoUpgradeEnabled( MSDN リファレンス) 以降のバージョンに追加されたとき、そのプロパティの既定の設定は "True" のままだったため、これは重大な変更ではありませんでした。

件名に関する Brandon Turner のブログ エントリによるとMissingMethodException、Framework の以前のバージョンで使用しようとするとエラーが発生します。したがって、プロパティを (TrueまたはFalse に) 設定しようとすると、プログラムは例外をスローします。あなたが説明したように、その行をコメントして削除すると、すべてが正常に機能するようになりました。

于 2011-01-13T05:22:21.930 に答える