3

这些天来使用 Visual C#(特别是 Visual C# 2008),菜单条和菜单的默认颜色似乎是蓝色,这对我来说看起来很奇怪,而且我真的很想覆盖它。我猜 Visual Studio 正在从我选择的系统主题或其他东西中选择这种蓝色,但是在我的系统上运行的其他 Windows 应用程序都没有这种蓝色,所以我不知道为什么我的 .NET 应用程序必须有它. ;)

无论如何,我注意到如果我使用旧版本的 Visual Studio (Visual Studio.NET) 创建应用程序,菜单条和菜单的默认背景颜色是您希望看到的标准灰色。这是我认为的问题的一种解决方案,但它似乎有点愚蠢,我真的很想找到一种方法在当前版本的 Visual C# 中覆盖它。

4

5 回答 5

11

将 MenuStrip 的“ RenderMode ”选项设置为“ System ”而不是“managerRenderMode”

:)

于 2009-04-09T13:54:27.977 回答
3

您是否尝试过设置 menuStrip 的背景颜色?您应该能够执行以下操作:

this.menuStrip1.BackColor = Color.FromKnownColor(KnownColor.Control);
于 2009-03-06T00:08:12.993 回答
2

您可以制作自己的渲染器

    public class BrowserMenuRenderer : ToolStripProfessionalRenderer
{
    public BrowserMenuRenderer() : base(new BrowserColors()) {}
}
public class BrowserColors : ProfessionalColorTable
{
    public override Color MenuItemSelected
    {
        get { return Color.FromArgb(30, 30, 30); }
    }
    public override Color MenuItemBorder
    {
        get { return Color.FromArgb(30, 30, 30); }
    }
    public override Color MenuItemSelectedGradientBegin
    {
        get { return Color.FromArgb(30, 30, 30); }
    }
    public override Color MenuItemSelectedGradientEnd
    {
        get { return Color.FromArgb(30, 30, 30); }
    }
}

然后,您只需将 menustrip 的渲染器设置为 YourRenderer

于 2015-07-21T22:04:19.887 回答
0

DotNet 1.x 没有 MenuStrip,而是使用标准的 Windows 菜单。

DotNet 2.0 及更高版本具有 MenuStrip,VS 7 及更高版本从工具箱中删除 MainMenu 并用使用 Office 的 MenuStrip 替换它Xp2003 主题,因此 MenuStrip 和 ToolStrip 采用蓝色配色方案。

MainMenu 仍然可以添加到标准 Windows 菜单的工具箱中。

于 2009-03-06T02:41:45.420 回答
0

您可以使用渲染模式,但这只会将系统主题设置为默认值。.net 允许您更改背景颜色和颜色,但是当您将鼠标悬停在它上面时,它仍然显示默认颜色。这是一种解决方法...

通过使用 "DropDownOpening" 、 "DropDownClosed" 和 "MouseEnter" 事件,这非常简单。

private void fileToolStripMenuItem_DropDownOpening(object sender, EventArgs e){

    // When the user clicks on "File" it will change to red.
    fileToolStripMenuItem.ForeColor = Color.Red;
}


private void testToolStripMenuItem_MouseEnter(object sender, EventArgs e){

    // When the user hovers over a child of "file" called "test", "file" turns orange.
    fileToolStripMenuItem.ForeColor = Color.Orange;
}


private void test2ToolStripMenuItem_MouseEnter(object sender, EventArgs e){

    // When the user hovers on a child of "file" called "test2", "file" turns blue.
    fileToolStripMenuItem.ForeColor = Color.Blue;
}


private void fileToolStripMenuItem_DropDownClosed(object sender, EventArgs e){

    // When the user leaves the "file" menu, it gets restored back to black.
    fileToolStripMenuItem.ForeColor = Color.Black;
}
于 2009-07-21T05:01:33.790 回答