c# MenuStrip使用ToolStripProfessionalRenderer和ProfessionalColo



我想用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);
    }
}

相关内容

  • 没有找到相关文章

最新更新