想象一下,我有一个有按钮的类(窗体/窗口)。在我的班级中,我将按钮订阅到一个方法,然后在其中抛出我自己的事件:
public delegate void MyEventHandler(object source, MyEventArgs e);
public event MyEventHandler MyEvent;
protected virtual void OnMyEvent(MyEventArgs e)
{
if (this.MyEvent != null) this.MyEvent(this, e);
}
private void Button_Click(object sender, EventArgs e)
{
this.OnMyEvent(???, ???);
}
触发我的活动的正确方法是什么。我应该this
使用自己的EventArgs
吗?
this.OnMyEvent(this, new EventArgs());
或者我应该将发件人和事件参数发送到订阅我自己的活动吗?
this.OnMyEvent(sender, e);
什么是正确的方法。我们应该只坚持一种方法吗?微软是如何做到的?任何代码指南?
谢谢。
答案 0 :(得分:1)
考虑谁将订阅您的活动。他们是否需要知道它是否来自按钮?或者他们只需要知道它被解雇了吗?
就我个人而言,我更希望听众只知道事件被触发而发件人是我的班级,让我可以自由地改变谁可以在第一时间点击事件,例如按钮单击,计时器等。