如何更改MenuStrip的外观

时间:2012-11-05 15:52:41

标签: c# border items appearance menustrip

我在我的应用中添加MenuStrip,并在ManagerRenderMode Render Mode添加BackColor。问题在于外观,看起来很内脏。看看那两张照片,我想改变透明的子菜单的白色边框,那个看起来灰色的蓝色矩形菜单和深灰色的子菜单(和他的边框是深蓝色)和边框白色菜单何时被选中。我怎么能这样做?

36; 36; 36是:ForeColorLightGraywhite border

enter image description here

enter image description here

我设法更改蓝色矩形,选中选项时为白色矩形,选择子菜单选项时为蓝色矩形,但我不知道如何更改 Color culoare = Color.FromArgb(20, 20, 20); Color culoare1 = Color.FromArgb(36, 36, 36); public override Color MenuItemSelected { get { return culoare; } } public override Color MenuItemBorder { get { return culoare; } } public override Color MenuItemSelectedGradientBegin { get { return culoare; } } public override Color MenuItemSelectedGradientEnd { get { return culoare; } } public override Color MenuItemPressedGradientBegin { get { return culoare; } } public override Color MenuItemPressedGradientEnd { get { return culoare; } } public override Color MenuBorder { get { return culoare; } } ,请提供帮助。

到目前为止,这是代码......

{{1}}

2 个答案:

答案 0 :(得分:17)

您可以通过创建自己的ColorTable来实现此目的,并覆盖您希望更改颜色的属性:

public  class TestColorTable : ProfessionalColorTable
{
    public override Color MenuItemSelected
    {
        get { return Color.Red; }
    }

    public override Color MenuBorder  //added for changing the menu border
    {
        get { return Color.Green; }
    }

}

您可以这样使用它:

private void Form1_Load(object sender, EventArgs e)
{
    menuStrip1.Renderer = new ToolStripProfessionalRenderer(new TestColorTable());
}

答案 1 :(得分:4)

您的方法不正确。您不使用forecolor / backcolor设置菜单和工具条的样式。

查看ToolStripProfessionalRenderer

有关如何使用此

的示例
public class MyToolStripRenderer : ToolStripProfessionalRenderer
{
    /* override styling/drawing here */
}

MenuStrip strip = new MenuStrip();

strip.Renderer = new MyToolStripRenderer();

//this will set RenderMode to "Custom"

考虑使用此example on CodeProject作为一些研究。

更好的是,VBForums已经加载了它们,已经实现了(通常的Luna,Office,Windows,Visual Studio样式!)

http://www.vbforums.com/showthread.php?596563-100-Customizable-MenuStrip-ToolStrip-StatusStrip-including-common-presets

如果您只是想要色彩......请使用Pondidum的答案!它涉及的工作量较少!