重新着色 MenuStrip

Recoloring MenuStrip

我有一个 MenuStrip,我想改变它的颜色。到目前为止,我有这个代码:

public class TestColorTable : ProfessionalColorTable
{
    public override Color MenuItemSelected
    {
        get{ return Color.LightGray; } // Don't mind the colors...
    }

    public override Color MenuItemBorder
    {
        get { return Color.LightGray; }
    }

    public override Color MenuItemSelectedGradientBegin
    {
        get { return Color.LightGray; }
    }

    public override Color MenuItemSelectedGradientEnd
    {
        get { return Color.LightGray; }
    }

    public override Color MenuItemPressedGradientBegin
    {
        get { return Color.DimGray; }
    }

    public override Color MenuItemPressedGradientEnd
    {
        get { return Color.DimGray; }
    }

    public override Color MenuBorder
    {
        get { return Color.LightGray; }
    }
}

使用此代码以及设计器,我设法更改了 MenuStrip 中几乎每个元素的颜色。差不多。

结果如下:

如您所见,有两个问题:1) 两个分隔符和 2) 子菜单周围的白色细边框。

关于如何更改 MenuStrip 的那两个部分的颜色有什么想法吗?

  1. 对于分隔符颜色尝试覆盖 SeparatorDark and or SeparatorLight property of the ProfessionalColorTable class.

  2. 至于子菜单周围的白色细边框...,嗯,它实际上不是边框。 ToolStripDropDown (the submenu) background itself. Try overriding the ToolStripDropDownBackground property of the ProfessionalColorTableclass改变颜色

示例:

public class TestColorTable : ProfessionalColorTable
{
  ...
  public override Color SeparatorDark
  {
    get { return Color.DimGray; }
  }

  public override Color ToolStripDropDownBackground
  {
    get { return Color.DimGray; }
  }
  ...
}