重新着色MenuStrip

时间:2015-06-12 15:47:51

标签: c# winforms colors 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几乎每个元素的颜色。几乎。

结果如下:

enter image description here

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

有关如何更改MenuStrip这两部分颜色的任何想法吗?

1 个答案:

答案 0 :(得分:2)

  1. 对于分隔符颜色,请尝试覆盖SeparatorDark类的SeparatorLight和/或ProfessionalColorTable属性。

  2. 至于子菜单周围的薄白边......嗯,它实际上不是边界。这是ToolStripDropDown(子菜单)背景本身。尝试覆盖ToolStripDropDownBackground类的ProfessionalColorTable属性以更改其颜色。

  3. 示例:

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