MenuStrip
コントロールが視覚スタイルの影響を受けないようにしようとしています。
そこで、シンプルなメニュー ストリップと無効なビジュアル スタイルを備えたシンプルなフォームを作成しましたMain()
。
// Application.EnableVisualStyles(); <-- no visual styles
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
この外観が得られます(灰色の境界線と背景に注意してください):
ここで、このフォームの他のコントロールが視覚スタイルの影響を受ける方法で同じことをしたいと思います (このドロップダウンのみの視覚スタイルを無効にしたい)。
DropDown
そのため、最初はすべての視覚スタイルを無効にしようとしましToolStripMenuItem
たが、うまくいきませんでした。次に、全体の視覚スタイルを無効にしようとしましMenuStrip
たが、どちらも機能しませんでした。
カスタム MenuStrip のコードは次のとおりです。
class MPMenuStrip : MenuStrip
{
[DllImportAttribute("uxtheme.dll")]
private static extern int SetWindowTheme(IntPtr hWnd, string appname, string idlist);
protected override void OnHandleCreated(EventArgs e)
{
// first attempt:
foreach (ToolStripMenuItem menuItem in this.Items)
SetWindowTheme(menuItem.DropDown.Handle, "", "");
// second attempt:
SetWindowTheme(this.Handle, "", "");
base.OnHandleCreated(e);
}
}
カスタムMenuStrip
コントロールを使用しているにもかかわらず、 Application.EnableVisualStyles();
inMain()
が呼び出されている場合、フォームの外観は次のようになります (青):
このドロップダウンの外観に他に何が影響する可能性がありますか?
私は何が欠けていますか?
ありがとう。