如何在.NET中更改menustrips和菜单的默认背景颜色?
-
03-07-2019 - |
题
这些天用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;
}