2

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

(object sender, EventArgs e)

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

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

4

1 回答 1

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);
}
于 2012-05-02T07:07:06.697 回答