如何更改的MenuStrip [复制]外观(How to change the appearance

2019-07-03 14:24发布

这个问题已经在这里有一个答案:

  • 如何更改菜单悬停颜色 4个回答

我添加MenuStrip在我的应用程序,并添加上ManagerRenderModeRender Mode 。 问题是与外观,看起来内脏。 看看那些两张照片,我想改变在透明子菜单即白边,那蓝色rectangule看起来内脏灰色的菜单和深灰色的子菜单(他的境界是深蓝色)和边境白色菜单的时候被选择。 我怎样才能做到这一点?

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

Answer 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());
}


Answer 2:

你的做法是不正确。 你用前景色/背景色不是风格的菜单和toolstrips。

看看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有他们的负荷,已经实施(在通常的月神,办公室,窗口,Visual Studio的风格!)

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

如果你只是想chaneg的颜色...使用Pondidum的答案! 它涉及较少的工作!



文章来源: How to change the appearance of a MenuStrip [duplicate]