如何使一个事件跨越多个窗体



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

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

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

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

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

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

最新更新