4

System.Windows.Forms.OpenFileDialog を使用している .NET 3.5 アプリケーションを使用しています。ただし、何をしても、開いているダイアログには XP スタイルのバージョンしか表示されません。コードをできるだけシンプルにしました。

OpenFileDialog openFileDialog = new OpenFileDialog()
//openFileDialog.AutoUpgradeEnabled = true; //Adding this line does nothing

if(DialogResult.OK == openFileDialog.ShowDialog())
{ ... }

何をしても、ダイアログには常に、新しい Vista+ バージョンではなく、古い XP スタイル バージョンが表示されます。また、デバッグしていくつかのパラメーターを確認すると、チェーン内のどこかに保護されたメンバー変数があることに気付きました: SettingsSupportVistaDialog、このインスタンスでは に設定されていfalseます。それが問題なのか、どこで/なぜこれが設定されるのかわかりません。

誰か提案はありますか?

これは、既存の (XP スタイルの) ダイアログのスクリーンショットです。 XP スタイルのダイアログ

これが私が望むものです: ここに画像の説明を入力

4

1 に答える 1

4

問題が見つかりました。.NET 3.5 のソース コードを掘り下げる必要がありましたが、ifApplication.VisualStyleStateが設定されていない場合、ClientAreaEnabledまたはClientAndNonClientAreasEnabled古い XP スタイルのダイアログが使用されることがわかりました。

于 2012-11-26T15:48:28.097 に答える