C# 从订阅事件或此事件触发发送方的事件?
假设我有一个类(窗体/窗口),它有一个按钮。在我的类中,我订阅一个方法的按钮,并在其中抛出我自己的事件:C# 从订阅事件或此事件触发发送方的事件?,c#,events,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.MyEven
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.OnMyEvent(this, new EventArgs());
或者我应该将发件人和事件参数发送到我自己的事件订阅中
this.OnMyEvent(sender, e);
正确的方法是什么。我们应该坚持一种方法吗?微软是如何做到的?有准则吗
谢谢。想想谁将订阅您的活动。他们需要知道它是否来自按钮吗?或者他们只需要知道它被解雇了
就个人而言,我希望侦听器只知道事件已触发,发送者是我的类,这使我可以自由更改谁可以首先触发事件,例如按钮单击、计时器等。取决于您的eventhandler需要什么。它需要按钮中的eventargs吗?它是否需要新的事件参数?或者它根本不需要eventargs,您可以将它们从签名中删除?请参阅-@nearyprogrammer,以便MS使用
此
作为发送方。让它根据订阅者的情况而定是否真的那么好?我更喜欢这方面的规则,并坚持下去。由于发送方
首先总是对象
,不同的情况会导致混淆,不是吗?对不起,我不是指特定的订户,而是指任何订户。我将保持一致,并始终将发送方设置为同一个对象,在这种情况下,它将是您定义MyEventHandler委托的类。这也是我所相信的。我的事件在中定义,并且是我引发事件,即使按钮事件触发我这样做。我与其他程序员交换了意见,结果产生了许多不同的意见。