5

MenuStrip在我的应用程序中添加了一个并添加ManagerRenderModeRender Mode. 问题在于外观,看内脏。看看那两张照片,我想把子菜单的白色边框改成透明的,那个蓝色的长方形看起来像灰色的菜单和深灰色的子菜单(他的边框是深蓝色)和白色的边框选择时的菜单。我怎么能做到这一点?

BackColor是:36; 36; 36并且ForeColorLightGray

在此处输入图像描述

在此处输入图像描述

我设法更改了蓝色矩形,选择选项时的白色矩形,选择子菜单选项时的蓝色矩形,但我不知道如何更改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; }
        }
4

2 回答 2

19

您可以通过创建自己的 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());
}
于 2012-11-05T16:17:13.257 回答
4

你的方法不正确。您不使用前景色/背景色设置菜单和工具条的样式。

看看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 的答案!它涉及的工作更少!

于 2012-11-05T16:16:39.453 回答