我想用ProfessionalColorTable改变我的菜单条的颜色,但是用这个我不能改变我的箭头的颜色…我寻找一种方法来改变我的菜单带样式与ColorTable(因为我认为有更多的选项)和箭头颜色与ToolStripProfessionalRenderer类。
这是我到目前为止的代码…
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();
或
menuStrip1.Renderer = new ToolStripProfessionalRenderer(new ColorTableMenu);
但不能同时使用
希望你能帮助我,谢谢!
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);
}
}