【问题标题】:Recoloring MenuStrip重新着色菜单条
【发布时间】:2015-06-12 15:47:51
【问题描述】:

我有一个 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 的这两个部分的颜色的任何想法?

【问题讨论】:

    标签: c# winforms colors menustrip


    【解决方案1】:
    1. 对于分隔符颜色,请尝试覆盖ProfessionalColorTable 类的SeparatorDark 和/或SeparatorLight 属性。

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

    例子:

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

    【讨论】:

    • 非常好,除了一件事:SeparatorDark 实际上更改了分隔符,但该行本身不再可见。有没有办法分别改变线条的颜色和背景的颜色?
    • 其实,没关系。我改用了SeperatorLight,但该行在分隔符中不可见。
    猜你喜欢
    • 2019-08-29
    • 1970-01-01
    • 2020-01-11
    • 1970-01-01
    • 2015-08-29
    • 1970-01-01
    • 2017-12-13
    • 1970-01-01
    • 2012-01-04
    相关资源
    最近更新 更多