Reputation: 29
I want to change the color of my MenuStrip with the ProfessionalColorTable but with this i cant change the colors of my arrows... I search for a way to change my MenuStrip style with the ColorTable (because I think there are more options) and also the arrow color with the ToolStripProfessionalRenderer class.
This is my code so far...
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);
}
}
AND
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; }
}
...
}
So my only way to set the renderer is
menuStrip1.Renderer = new ArrowRenderer();
OR
menuStrip1.Renderer = new ToolStripProfessionalRenderer(new ColorTableMenu);
but not both at the same time :(
Hope you can help me out, THANKS!
Upvotes: 0
Views: 1949
Reputation: 29
OK found it...
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);
}
}
Upvotes: 2