C#MenuStrip使用ToolStripProfessionalRenderer和ProfessionalColorTable作为Renderer

时间:2016-09-30 21:18:35

标签: c# renderer menustrip

我想用ProfessionalColorTable改变我的MenuStrip的颜色,但是我不能改变我的箭头的颜色...... 我使用ColorTable搜索一种改变我的MenuStrip样式的方法(因为我认为有更多选项)以及使用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);
    }
}

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; }
    }

    ...
}

所以设置渲染器的唯一方法是

menuStrip1.Renderer = new ArrowRenderer();

OR

menuStrip1.Renderer = new ToolStripProfessionalRenderer(new ColorTableMenu);

但不能同时:(

希望你能帮助我,谢谢!

1 个答案:

答案 0 :(得分:1)

确定找到了......

0xF0