2012-05-10 37 views
1

我已經創建了此窗體和一個自定義函數,該窗體使用背景中的一個黑色部分來繪製控件的背景。將背景圖片應用於Menustrip子菜單項目

enter image description here

懸停在控制區域突出顯示,有沒有訪問到這個顏色?喜歡menustrip.Highlight顏色?

enter image description here

我一直無法找到的子菜單中訪問以及。我曾看過msdn,發現有關改變整個主題的能力,只有顏色,沒有關於如何設置背景圖像的信息。我已經搜索過並找到類似的主題,但沒有回答我的問題或足夠接近推斷正確的答案。任何援助將大大appriciated。用C#編寫。另外,子菜單是否存在時會添加到控件列表中?

+0

可能重複[如何更改菜單懸停顏色 - 的WinForms(http://stackoverflow.com/questions/9260303/how -to-change-menu-hover-color-winforms) –

+0

我不想改變任何顏色。我正嘗試將背景圖像應用於 –

+0

顏色名稱爲Color.Transparent。 –

回答

2

您應該使用ToolStripRenderer來自定義菜單外觀。將渲染器分配給菜單並調用invalidate:

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

如您所見,渲染器需要顏色表。您應該創建自定義的,並覆蓋你希望所有的顏色定製:

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