2016-09-30 263 views
0

我想改變我的MenuStrip與ProfessionalColorTable的顏色,而是有了這個,我不能改變我的箭的顏色... 我尋找一種方式來改變我的MenuStrip風格與ColorTable(因爲我認爲有更多的選項),還有ToolStripProfessionalRenderer類的箭頭顏色。C#的MenuStrip使用ToolStripProfessionalRenderer和ProfessionalColorTable作爲渲染

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

public class ArrowRenderer : ToolStripProfessionalRenderer 
{ 
    protected override void OnRenderArrow(ToolStripArrowRenderEventArgs e) 
    { 
     var tsMenuItem = e.Item as ToolStripMenuItem; 
     if (tsMenuItem != null) 
      e.ArrowColor = Color.White; 
     base.OnRenderArrow(e); 
    } 
} 

public class ColorTableMenu : ProfessionalColorTable 
{ 
    public ColorTableMenu() 
    { 
     base.UseSystemColors = false; 
    } 
    Color color = Color.FromArgb(31, 77, 120); 
    public override Color MenuItemSelected 
    { 
     get { return color; } 
    } 

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

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

    ... 
} 

所以我設定渲染器唯一方法是

menuStrip1.Renderer = new ArrowRenderer(); 

OR

menuStrip1.Renderer = new ToolStripProfessionalRenderer(new ColorTableMenu); 

但不是兩個在同一時間:(

希望你能幫助我,謝謝!

回答

0

OK找到了......

public class ArrowRenderer : ToolStripProfessionalRenderer 
{ 
    public ArrowRenderer() : base(new ColorTableMenu()) 
    { 

    } 

    protected override void OnRenderArrow(ToolStripArrowRenderEventArgs e) 
    { 
     var tsMenuItem = e.Item as ToolStripMenuItem; 
     if (tsMenuItem != null) 
      e.ArrowColor = Color.White; 
     base.OnRenderArrow(e); 
    } 
}