如何更改MenuStrip的外观

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

BackColor是: 36; 36; 36 36; 36; 36 36; 36; 36ForeColorLightGray

在此处输入图像描述

在此处输入图像描述

我设法更改蓝色矩形,选择选项时的白色矩形,选择子菜单选项时的蓝色矩形,但我不知道如何更改white border ,请帮助..

这是迄今为止的代码……

  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; } } 

您可以通过创建自己的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()); } 

你的方法不正确。 您不使用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" 

考虑在CodeProject上使用这个例子作为一些研究。

更好的是,VBForums有很多已经实现的(在通常的Luna,Office,Windows,Visual Studio样式中!)

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

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