更改WinForms按钮突出显示颜色

时间:2015-01-07 19:01:11

标签: c# visual-studio button highlight mousehover

我找到了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; }
    }
}

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

我要做的是为表格中的按钮执行最后一部分(将突出显示更改为金色/黄色)。

2 个答案:

答案 0 :(得分:4)

在按钮的属性中:
在Appearance / FlatStyle下,选择" Flat"。
然后,在Appearance / FlatAppearance / MouseOverBackColor下,选择您想要的高亮颜色。

答案 1 :(得分:1)

您可以查看Button Renderer

如果您只想订阅MouseHover事件,为什么要覆盖渲染器:

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

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