Windows に組み込まれているファイルを開く/保存するダイアログを .NET を使用して拡張する方法を説明するこの記事に従いました。いくつかのマイナーな変更の後、すべて正常に動作しますが、ダイアログの外観は他のダイアログとわずかに異なります。重要ではありませんが、その背後にある理由が何であるかに興味があります.
私のダイアログ(フラットボタン):
その他のダイアログ (3D ボタン):
Windows に組み込まれているファイルを開く/保存するダイアログを .NET を使用して拡張する方法を説明するこの記事に従いました。いくつかのマイナーな変更の後、すべて正常に動作しますが、ダイアログの外観は他のダイアログとわずかに異なります。重要ではありませんが、その背後にある理由が何であるかに興味があります.
私のダイアログ(フラットボタン):
その他のダイアログ (3D ボタン):
その記事のコメントから:
SaveFileDialogWithEncoding の例は素晴らしいです。ただし、ルック アンド フィールは「古いスタイル」です。つまり、ボタンとコントロールは新しい「XP ルック」(丸みを帯びたボタンなど) ではありません。これはおそらく、OPENFILENAME 構造体のフィールドの 1 つのフラグ設定であり、私はそれを調べています。あなた(または他の誰か)がその問題を解決するための洞察を持っているかどうか疑問に思っていました.
そして自己回答:
気にしないでください-それを理解しました。フォーム オブジェクトをインスタンス化する前に、次のように Application.EnableVisualStyles() を呼び出す必要があります。
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
LarsTech のソリューションは、ほとんどの場合に機能するようですが、Office アドインでは機能しないようです。ここでは、この Microsoft の記事EnableThemingInScope
で説明されているように実装し、次のコードで使用すると役立ちます。
using( new EnableThemingInScope( true ) )
{
if (!GetSaveFileName(ref ofn))
{
int ret=CommDlgExtendedError();
if (ret!=0)
{
throw new ApplicationException("Couldn't show file open dialog - " + ret.ToString());
}
return DialogResult.Cancel;
}
}