为什么这些参数是事件的默认值?

时间:2012-05-02 07:05:18

标签: c# winforms events

我看到以下参数在样板代码中重复了很多但我似乎还没有使用它们呢?

(object sender, EventArgs e)

例如,如果我双击一个新按钮,那么事件的方法有这些参数,但当我向方法添加代码时,我不使用参数。

它们是什么,我什么时候使用它们?

1 个答案:

答案 0 :(得分:7)

发件人是事件的发起者 - 因此您可能有几个按钮使用相同的点击处理程序,并且您想要禁用单击任何按钮,例如。如果您只使用事件处理程序订阅单个源的事件,那么它并不是非常有用。

EventArgs本身毫无意义,因为它没有任何信息 - 但它被用作具有信息的其他类的基类(例如键盘和鼠标信息)。让它出现的好处是,如果你需要额外的信息,你可以创建一个单一的事件处理程序,可以用来订阅任何遵循模式的事件。例如:

button.Click += LogEvent;     // EventHandler delegate type
textArea.KeyDown += LogEvent; // KeyEventHandler delegate type

...

private static void LogEvent(object sender, EventArgs ignored)
{
    Control control = (Control) sender;
    Log("Event fired by " + control.Name);
}