更改WinForms按钮突出显示颜色

我找到了这个页面 ,其中概述了如何更改MenuStrip及其项目的渲染。

我想使用它,但问题是当您将鼠标hover在按钮上时突出显示的颜色与它不匹配。

有没有办法将高光颜色从蓝色变为黄色? 我已经尝试过使用MouseHover和MouseLeave事件,但由于某种原因它们真的很慢,并且它们将按钮更改为纯色,看起来很糟糕,但在按钮边缘留下一个边框,不会改变。

在设计师:

this.ButtonName.MouseHover += new System.EventHandler(button_mousehover); 

然后在代码中:

 private void button_mousehover(object sender, EventArgs e) { Button btn = sender as Button; btn.BackColor = Color.Yellow; } 

有没有像我上面发布的链接那样容易将高亮颜色从蓝色更改为其他内容?

这是更改菜单条渲染的代码:

 private void myForm Load(object sender, EventArgs e) { myMenuStrip.Renderer = new MenuRenderer(); { private class MenuRenderer : ToolStripProfessionalRenderer { public MenuRenderer() : base(new MyColors()) { } } private class MyColors : ProfessionalColorTable { public override Color MenuItemSelectedGradientBegin { get { return Color.Orange; } } public override Color MenuItemSelectedGradientEnd { get { return Color.Yellow; } } public override Color MenuItemPressedGradientBegin { get{ return Color.Yellow; } } public override Color MenuItemPressedGradientEnd { get { return Color.Orange; } } public override Color MenuItemSelected { get { return Color.Gold; } } } 

因此,它会将hover的菜单项的背景更改为橙黄色渐变,在点击时将其更改为黄橙色渐变,并且菜单中的任何项目在hover时都会有金色突出显示。

我正在尝试做的是为我的表单中的按钮做最后一部分(将突出显示更改为金色/黄色)。

您可以查看Button Renderer 。

为什么要在简单地订阅MouseHover事件时覆盖渲染器,如下所示:

 this.someButtonName.MouseHover += (s,e) => { this.someButtonName.BackColor = Color.Yellow; }; 

我建议您也使用鼠标离开,以便在鼠标不再使用时将按钮重置为初始颜色。

在按钮的属性中:
在Appearance / FlatStyle下,选择“Flat”。
然后,在Appearance / FlatAppearance / MouseOverBackColor下,选择所需的高亮颜色。