我找到了this page,它概述了如何更改MenuStrip及其项的呈现方式。
我想使用它,但问题是当你将鼠标悬停在按钮上时,突出显示的颜色与它不匹配。
有没有办法把突出显示的颜色从蓝色改成黄色?我尝试过使用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; }
}
}
因此,它会将悬停在菜单项上的背景更改为橙色-黄色渐变,并在单击时将其更改为黄色-橙色渐变,菜单中的任何项目在悬停时都会有金色高亮显示。
我要做的是对表单中的按钮执行最后一部分(将突出显示更改为金色/黄色)。
发布于 2015-01-08 03:03:39
你可以看看Button Renderer。
当您可以像这样简单地订阅MouseHover事件时,为什么要覆盖渲染器:
this.someButtonName.MouseHover += (s,e) =>
{
this.someButtonName.BackColor = Color.Yellow;
};
我建议你也使用鼠标左键,以便在鼠标不在上面时将按钮重置为初始颜色。
https://stackoverflow.com/questions/27826699
复制相似问题