首页 > 解决方案 > 如何使事件跨越多种形式

问题描述

我正在处理的项目需要多个表单上的几个按钮,而不是执行下面显示的代码,我希望它可以成为全球性的。

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

我试过查看类、标签和属性。我知道类可以跨多种形式使用,但我不知道它们是否与事件一起使用。

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);
}

标签: c#winforms

解决方案


您可以创建一个继承的按钮。添加一个新类,然后确保: 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。

任何时候您想使用扩展/收缩按钮,只需使用继承的按钮即可。


推荐阅读