2016-09-30 11 views
0

ProfessionalColorTableを使用してMenuStripの色を変更したいが、これで矢印の色を変更できない。 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); 
    } 
} 
関連する問題