如何更改 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; 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; 
        

【问题讨论】:

【参考方案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 警告类 [重复]

VS2005中menustrip控件如何实现tabcontrol功能?

如何更改调整大小手柄的外观?

触摸结束时如何更改 UISlider Thumb 外观

menustrip控件 如何获得2级菜单个数

如何在 Blend 中动态更改 UserControl 的外观?