2012-11-05 90 views
4

我在我的應用程序中添加MenuStrip,並在ManagerRenderMode處添加Render Mode。問題在於外觀,看起來內臟。看看這兩張照片,我想要將透明的子菜單的白色邊框改爲透明,對於菜單和深灰色的子菜單(和他的邊框是深藍色)以及邊框爲白色的灰色矩形菜單選擇時。我如何做到這一點?如何更改MenuStrip的外觀

BackColor是:36; 36; 36ForeColor是​​。

enter image description here

enter image description here

我設法改變藍色矩形,當選項被選中的白色矩形,藍色矩形當我選擇子菜單的一個選項,但我不知道該怎麼改變white border,請幫助..

這裏是到目前爲止的代碼...

 Color culoare = Color.FromArgb(20, 20, 20); 
     Color culoare1 = Color.FromArgb(36, 36, 36); 

     public override Color MenuItemSelected 
     { 
      get { return culoare; } 
     } 

     public override Color MenuItemBorder 
     { 
      get { return culoare; } 
     } 

     public override Color MenuItemSelectedGradientBegin 
     { 
      get { return culoare; } 
     } 

     public override Color MenuItemSelectedGradientEnd 
     { 
      get { return culoare; } 
     } 

     public override Color MenuItemPressedGradientBegin 
     { 
      get { return culoare; } 
     } 

     public override Color MenuItemPressedGradientEnd 
     { 
      get { return culoare; } 
     } 

     public override Color MenuBorder 
     { 
      get { return culoare; } 
     } 

回答

16

您可以通過創建自己的ColorTable,並覆蓋你希望改變的顏色屬性做到這一點:

public class TestColorTable : ProfessionalColorTable 
{ 
    public override Color MenuItemSelected 
    { 
     get { return Color.Red; } 
    } 

    public override Color MenuBorder //added for changing the menu border 
    { 
     get { return Color.Green; } 
    } 

} 

你會使用這樣的:

private void Form1_Load(object sender, EventArgs e) 
{ 
    menuStrip1.Renderer = new ToolStripProfessionalRenderer(new TestColorTable()); 
} 
+0

有點我得到了,除了我採取繪圖的方法。這對於OP的需求可能更簡單。投票++; – series0ne

+0

你的方法幫助我,但我不知道如何改變到子菜單的邊界(secound圖片,白色邊框)。幫助.. – AnDr3yy

+0

@ AnDr3yy:看看我的編輯 - 它似乎是你需要覆蓋的MenuBorder屬性。 – Pondidum

3

您的方法不正確。您不使用前景色/背景色設計菜單和工具條。

看看ToolStripProfessionalRenderer

示例如何考慮使用此example on CodeProject一些研究使用該

public class MyToolStripRenderer : ToolStripProfessionalRenderer 
{ 
    /* override styling/drawing here */ 
} 

MenuStrip strip = new MenuStrip(); 

strip.Renderer = new MyToolStripRenderer(); 

//this will set RenderMode to "Custom" 

更妙的是,VBForums有他們的負荷,已經實施(在通常的月神,辦公室,窗口,Visual Studio的風格!)

http://www.vbforums.com/showthread.php?596563-100-Customizable-MenuStrip-ToolStrip-StatusStrip-including-common-presets

如果你只是想chaneg的顏色...用Pondidum的答案!它涉及較少的工作!

+0

的vbforums鏈接非常有趣,你的方法肯定提供了更多的控制(覆蓋外觀,而不僅僅是顏色)。 – Pondidum