c# - 是否可以在不创建派生类的情况下将数据传递给 EventArgs?

标签 c# events

我有点懵。我知道我可以创建从 EventArgs 派生的类以获得自定义事件数据。但是我能以某种方式使用基类 EventArgs 吗?就像鼠标按钮点击一样,在订阅者方法中,总是有“EventArgs e”参数。我能否以某种方式创建以这种方式传递数据的方法,我的意思是它们将在基本 Eventargs 中传递?

最佳答案

您可以通过通用类型方法使用 EventArgs 类。在此示例中,我将使用 Rect 类作为返回类型:

public EventHandler<Rect> SizeRectChanged;

引发事件:

if(SizeRectChanged != null){
   Rect r = new Rect(0,0,0,0);
   SizeRectChanged(this,r);
}

监听事件:

anyElement.SizeRectChanged += OnSizeRectChanged;

public void OnSizeRectChanged(object sender, Rect e){
    //TODO abything using the Rect class
    e.Left = e.Top = e.Width = e.Height = 50;
}

因此,不需要创建新的事件类或委托(delegate),只需创建一个传递特定类型 T 的 EventHandler。

关于c# - 是否可以在不创建派生类的情况下将数据传递给 EventArgs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1942621/

相关文章:

c# - 方向取决于数据时的 OrderByWithDirection

c# - C# 中事件的无操作订阅者 - 空检查冗余

javascript - jQuery - 当类被删除时

java - Swing JButton 事件

c# - ScrollWindow 完全没有效果

c# - 如何在 .NET 中显示古埃及象形文字?

c# - 帮助枚举和 Enum.Parse

JQuery 检查事件绑定(bind)

events - Kivy Spinner : is any event triggered when a value is selected from the Spinner

.net - 禁用 Windows 窗体上的所有事件