当鼠标没有悬停时,按钮背景颜色会丢失

时间:2010-08-14 20:24:27

标签: c# winforms

我的框架上有许多按钮,我想显示通过显示背景颜色选择哪一个。唯一的问题是,只有当鼠标悬停在按钮上时,此背景颜色才可见,否则按钮将呈白色清晰。

覆盖MouseEnter和MouseLeave事件没有帮助。

该按钮继承自标准Windows窗体按钮,并具有以下方法来显示它是否已被选中:

public void SetFocus(bool focused)
{
    if (focused)
        this.BackColor = SelectColor;
    else this.BackColor = color;
}

SelectColor是一种静态黄色(表示按钮被选中),颜色是存储在类中的私有颜色,保留按钮未选中时所具有的颜色。

有没有人知道如何显示背景颜色,即使没有悬停在按钮上?

1 个答案:

答案 0 :(得分:0)

创建一个派生自Button的新类:

class MyButton : Button
{
    public MyButton() : base()
    {
        this.BackColor = System.Drawing.Color.AntiqueWhite;
    }

    protected override void OnMouseEnter(EventArgs e)
    {
        this.BackColor = System.Drawing.Color.Blue;
        base.OnEnter(e);
    }

    protected override void OnMouseLeave(EventArgs e)
    {
        this.BackColor = System.Drawing.Color.AntiqueWhite;
        base.OnLeave(e);
    }
}

然后在表单上使用它对我有用。您必须以编程方式添加按钮或编辑.designer.cs文件。

显然用您的值替换我的硬编码颜色。