2012-05-10 7 views
1

私はこのフォームと、フォームの背景の暗い部分でコントロールの背景をペイントするカスタム関数を作成しました。ホバーでMenustripサブメニューに背景画像を適用する項目

enter image description here

制御領域が強調表示され、この色にアクセサはありますか? menustrip.Highlightのような色?

enter image description here

私は同様に、サブメニューのアクセサを見つけることができませんでした。私はmsdnを見て、テーマ全体、色のみ、背景イメージの設定方法に関する情報は変更できないという記事を見つけました。私はSOを探して、似たような話題を見つけましたが、私の質問に答えたり、正解を外挿するのに十分近いものは見つかりませんでした。どんな援助も大いに訴えられるでしょう。 C#で書かれています。また、コントロールのリストにサブメニューaが追加されている場合は追加されますか?

+0

の可能重複[メニューホバー色を変更する方法を - WinFormsの](http://stackoverflow.com/questions/9260303/how変更する - メニュー - ホバー - 色 - winforms) –

+0

私は任意の色を変更しようとしていません。 –

+0

に背景画像を適用しようとしています。色の名前はColor.Transparentです。 –

答えて

2

ToolStripRendererを使用してメニューの外観をカスタマイズする必要があります。メニューにレンダラを割り当て、無効化を呼び出します。

menuStrip.Renderer = new ToolStripProfessionalRenderer(new DarkColorTable()); 
menuStrip.Invalidate(); 

あなたが見ることができるように、レンダラは、カラーテーブルが必要です。カスタム1を作成し、カスタマイズしたいすべての色をオーバーライドする必要があります。

public class DarkColorTable : ProfessionalColorTable 
{ 
    public override Color MenuStripGradientBegin 
    { 
     get { return Color.FromArgb(128, Color.Black); } 
    } 

    public override Color MenuStripGradientEnd 
    { 
     get { return Color.FromArgb(128, Color.Black); } 
    } 

    public override Color ButtonSelectedHighlight 
    { 
     get { return Color.FromArgb(64, Color.Black); } 
    } 

    // etc 
} 
1
Private Sub BackImageToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BackImageToolStripMenuItem.Click 
Me.MenuStrip1.BackgroundImage=Form1.My.Resources.Resources.nature 'where nature is image name 
    BackImageToolStripMenuItem.Checked = True 
End Sub 
関連する問題