C# 如何更改菜单条的外观

C# 如何更改菜单条的外观,c#,border,items,appearance,menustrip,C#,Border,Items,Appearance,Menustrip,我在我的应用程序中添加了一个MenuStrip,并在渲染模式下添加了ManagerRenderMode。问题在于外观、外观和内脏。看看这两张照片,我想改变透明的子菜单的白色边框,菜单和子菜单的蓝色矩形(其边框为深蓝色),以及选中时菜单的白色边框。我怎么能做到 BackColoris:36;36; 36和前景色为浅灰色 我成功地更改了蓝色矩形,选择选项时更改了白色矩形,选择子菜单选项时更改了蓝色矩形,但我不知道如何更改白色边框,请帮助 这是到目前为止的代码 Color culo

我在我的应用程序中添加了一个
MenuStrip
,并在
渲染模式下添加了
ManagerRenderMode
。问题在于外观、外观和内脏。看看这两张照片,我想改变透明的子菜单的白色边框,菜单和子菜单的蓝色矩形(其边框为深蓝色),以及选中时菜单的白色边框。我怎么能做到

BackColor
is:
36;36; 36
前景色
浅灰色

我成功地更改了蓝色矩形,选择选项时更改了白色矩形,选择子菜单选项时更改了蓝色矩形,但我不知道如何更改
白色边框,请帮助

这是到目前为止的代码

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

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

看看

有关如何使用此功能的示例

public class MyToolStripRenderer : ToolStripProfessionalRenderer
{
    /* override styling/drawing here */
}

MenuStrip strip = new MenuStrip();

strip.Renderer = new MyToolStripRenderer();

//this will set RenderMode to "Custom"
考虑将其用作一些研究

更好的是,VBForums已经实现了大量的功能(在通常的Luna、Office、Windows和Visual Studio样式中!)


如果你只是想改变颜色…使用Pondidum的答案!它涉及更少的工作

您可以通过创建自己的颜色表并覆盖要更改其颜色的属性来完成此操作:

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的需求来说可能更简单。投票++;您的方法对我有帮助,但我不知道如何更改子菜单的边框(secound图片,白色边框)。Help..@AnDr3yy:请参阅我的编辑-它似乎是您需要为此覆盖的MenuBorder属性。哇,谢谢!我甚至都不知道这是可能的,一个全新的世界为我打开了:DEven nicer VisualStudio正在为覆盖的其他可能性提供建议。非常感谢!!!升级。vbforums链接非常有趣,您的方法当然提供了更多的控制(覆盖外观,而不仅仅是颜色)。如何更改elementToolStripMenuItem的位置。是否有方法设置elementToolStripMenuItem的位置