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

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

有帮助吗?

解决方案

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

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

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

其他提示

设置“ RenderMode ”" MenuStrip选项为“系统”而不是“managerRenderMode”

:)

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

this.menuStrip1.BackColor = Color.FromKnownColor(KnownColor.Control);

您可以制作自己的渲染器

    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

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

通过使用“DropDownOpening”来完成他是非常简单的。 ,“DropDownClosed”和“MouseEnter”,以及“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;
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top