发件人从订阅事件或此事件触发事件?

时间:2017-05-05 07:23:01

标签: c# events

想象一下,我有一个有按钮的类(窗体/窗口)。在我的班级中,我将按钮订阅到一个方法,然后在其中抛出我自己的事件:

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

什么是正确的方法。我们应该只坚持一种方法吗?微软是如何做到的?任何代码指南?

谢谢。

1 个答案:

答案 0 :(得分:1)

考虑谁将订阅您的活动。他们是否需要知道它是否来自按钮?或者他们只需要知道它被解雇了吗?

就我个人而言,我更希望听众只知道事件被触发而发件人是我的班级,让我可以自由地改变谁可以在第一时间点击事件,例如按钮单击,计时器等。