如何使事件跨越多种形式

时间:2018-12-14 19:14:53

标签: c# winforms

我正在从事的项目需要使用多种形式的几个按钮,而不是像下面希望的那样将代码设置为全局代码。

这只是项目的一部分,所有代码要做的就是在用户将鼠标悬停在按钮上时放大按钮图片。

我尝试查看类,标签和属性。我知道可以使类跨多种形式使用,但是我无法确定它们是否可以用于事件。

private void btnEnter_MouseEnter(object sender, EventArgs e)
{
   Button btn = (Button)sender;
   btn.Size = new Size(299, 102);
}

private void btnLeave_MouseLeave(object sender, EventArgs e)
{
   Button btn = (Button)sender;
   btn.Size = new Size(289, 92);
}

1 个答案:

答案 0 :(得分:1)

您可以创建一个继承的按钮。添加一个新的类,然后确保将: Button放在类名之后。

using System.Drawing;
using System.Windows.Forms;

namespace InheritedButton
{
    public class ExpandButton : Button
    {
        public Size EnterSize { get; set; }
        private Size _LeaveSize;
        public Size LeaveSize
        {
            get
            {
                return (_LeaveSize);
            }
            set
            {
                _LeaveSize = value;
                this.Size = LeaveSize;
            }
        }

        public ExpandButton() : base()
        {
        }

        protected override void OnMouseEnter(EventArgs e)
        {
            this.Size = EnterSize;
            base.OnMouseEnter(e);
        }

        protected override void OnMouseLeave(EventArgs e)
        {
            this.Size = LeaveSize;
            base.OnMouseLeave(e);
        }
    }
}

构建您的项目,新按钮将出现在工具箱中。将其放到窗体/控件上,并确保设置EnterSize和LeaveSize。 EnterSize确定鼠标悬停时按钮的大小,LeaveSize设置初始大小并悬停时设置按钮的大小。您无需设置Size属性,只需设置LeaveSize。

每次您要使用扩展/收缩按钮时,只需使用继承的按钮即可。