首页 > 解决方案 > C# CustomButton 不起作用 CancelButton 和 AcceptButton

问题描述

我制作了自己的自定义按钮。

public partial class CustomButton : Button
{
    public Image Background_Hover { get; set; }
    public Image Background_Down { get; set; }
    public Image Background_Normal;

    public Image Image_Hover { get; set; }
    public Image Image_Down { get; set; }
    public Image Image_Normal;

    public Color ForeColor_Hover { get; set; }
    public Color ForeColor_Down { get; set; }
    public Color ForeColor_Normal;

    public CustomButton()
    {
        InitializeComponent();
        this.SetStyle(ControlStyles.Selectable, false);
    }

    protected override void OnMouseEnter(System.EventArgs e)
    {
        Background_Normal = base.BackgroundImage;
        if (Background_Hover != null) base.BackgroundImage = Background_Hover;

        Image_Normal = base.Image;
        if (Image_Hover != null) base.Image = Image_Hover;

        ForeColor_Normal = base.ForeColor;
        if (ForeColor_Hover != Color.Empty) base.ForeColor = ForeColor_Hover;

        base.OnMouseEnter(e);
    }

    protected override void OnMouseLeave(System.EventArgs e)
    {
        if (Background_Hover != null) base.BackgroundImage = Background_Normal;
        if (Image_Hover != null) base.Image = Image_Normal;
        if (ForeColor_Hover != Color.Empty) base.ForeColor = ForeColor_Normal;

        base.OnMouseLeave(e);
    }

    protected override void OnMouseDown(MouseEventArgs e)
    {
        if (Background_Down != null) base.BackgroundImage = Background_Down;
        if (Image_Down != null) base.Image = Image_Down;
        if (ForeColor_Down != Color.Empty) base.ForeColor = ForeColor_Down;

        base.OnMouseDown(e);
    }

    protected override void OnMouseUp(MouseEventArgs e)
    {
        if (Background_Hover != null) base.BackgroundImage = Background_Hover;
        if (Image_Hover != null) base.Image = Image_Hover;
        if (ForeColor_Hover != Color.Empty) base.ForeColor = ForeColor_Hover;

        base.OnMouseUp(e);
    }       
}

我制作了登录表单,所以我希望在用户输入 Enter 或 ESC 时关闭登录表单。

所以我添加了 CustomButton 并在登录表单 AcceptButton 和 Cancel Button 属性上分配了 CustomButton 。

但是当我输入 Enter 或 ESC 时,它不起作用,甚至点击事件也没有发生。

我不知道为什么它不起作用。

因为我让CustomButton继承了System.Windows.Forms.Button。

我认为它像 System.Windows.Forms.Button 一样工作,但事实并非如此。

我怎么解决这个问题?

标签: c#formswinformsbuttonuser-controls

解决方案


推荐阅读