C# 如何在winforms中更改菜单项的背景色?

C# 如何在winforms中更改菜单项的背景色?,c#,winforms,colors,background,menustrip,C#,Winforms,Colors,Background,Menustrip,你好 这幅图概括了这一点: 遇到一些问题,无法使用搜索栏找到正确答案。我曾经尝试过使用自定义渲染,但当我对菜单条使用系统渲染时,它总是仅用于专业渲染 编辑:发现了我自己 public class CustomColorTable : ProfessionalColorTable { public override Color MenuItemSelected { get { return Color.FromArgb(51,153,255); } }

你好

这幅图概括了这一点:

遇到一些问题,无法使用搜索栏找到正确答案。我曾经尝试过使用自定义渲染,但当我对菜单条使用系统渲染时,它总是仅用于专业渲染

编辑:发现了我自己

public class CustomColorTable : ProfessionalColorTable
{
    public override Color MenuItemSelected
    {
        get { return Color.FromArgb(51,153,255); }
    }

    public override Color ToolStripDropDownBackground
    {
        get { return Color.FromArgb(83, 83, 83); }
    }

    public override Color ImageMarginGradientBegin
    {
        get { return Color.FromArgb(83, 83, 83); }
    }

    public override Color ImageMarginGradientEnd
    {
        get { return Color.FromArgb(83, 83, 83); }
    }

    public override Color ImageMarginGradientMiddle
    {
        get { return Color.FromArgb(83,83,83); }
    }

    public override Color MenuItemSelectedGradientBegin
    {
        get { return Color.FromArgb(51, 153, 255); }
    }
    public override Color MenuItemSelectedGradientEnd
    {
        get { return Color.FromArgb(51, 153, 255); }
    }

    public override Color MenuItemPressedGradientBegin
    {
        get { return Color.FromArgb(51, 153, 255); }
    }

    public override Color MenuItemPressedGradientMiddle
    {
        get { return Color.FromArgb(51, 153, 255); }
    }

    public override Color MenuItemPressedGradientEnd
    {
        get { return Color.FromArgb(51, 153, 255); }
    }

    public override Color MenuItemBorder
    {
        get { return Color.FromArgb(51, 153, 255); }

    }
}
然后只需将新的颜色表用于:

MS1.Renderer = new ToolStripProfessionalRenderer(new CustomColorTable()); ;

可能重复您是否检查了本教程?我已经按照您的示例使用CustomColorTable通过溢出菜单控制ToolStrip上的大多数颜色,但由于某些原因,当按钮显示在溢出菜单中时,它会忽略我的自定义表。你知道为什么吗?