如何更改 MenuStrip 的外观 [重复]
Posted
技术标签:
【中文标题】如何更改 MenuStrip 的外观 [重复]【英文标题】:How to change the appearance of a MenuStrip [duplicate] 【发布时间】:2012-10-25 11:55:06 【问题描述】:我在我的应用程序中添加了一个MenuStrip
,并在Render Mode
添加了ManagerRenderMode
。问题在于外观,看内脏。看看那两张照片,我想把子菜单的白色边框改成透明的,那个蓝色的长方形看起来像灰色的菜单和深灰色的子菜单(他的边框是深蓝色)和白色的边框选择时的菜单。我怎么能做到这一点?
BackColor
是:36; 36; 36
和 ForeColor
是 LightGray
。
我设法更改了蓝色矩形,选择选项时的白色矩形,选择子菜单选项时的蓝色矩形,但我不知道如何更改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;
【问题讨论】:
【参考方案1】:您可以通过创建自己的 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());
【讨论】:
有点像我得到的,除了我采用了绘图方法。对于 OP 的需求,这可能更简单。投票++; 你的方法对我有帮助,但我不知道如何更改子菜单的边框(第二张图片,白色边框)。帮助.. @AnDr3yy:查看我的编辑 - 它似乎是您需要覆盖的 MenuBorder 属性。 哇,谢谢!我什至不知道这是可能的,一个全新的世界为我打开了:D 更好的 VisualStudio 为覆盖的其他可能性提供建议。非常感谢这个!!!上升了。【参考方案2】:您的方法不正确。您不使用前景色/背景色设置菜单和工具条的样式。
看看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 用作一些研究。
更好的是,VBForum 有很多,已经实现(在通常的 Luna、Office、Windows、Visual Studio 样式中!)
http://www.vbforums.com/showthread.php?596563-100-Customizable-MenuStrip-ToolStrip-StatusStrip-including-common-presets
如果您只是想更改颜色...使用 Pondidum 的答案!它涉及的工作更少!
【讨论】:
vbforums 链接非常有趣,您的方法当然提供了更多控制(覆盖外观,而不仅仅是颜色)。 如何更改 elementToolStripMenuItem 的位置。有什么方法可以设置 elementToolstripMenuItem 的位置以上是关于如何更改 MenuStrip 的外观 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用 jQuery 更改单击按钮的外观,并覆盖 btn 警告类 [重复]