我看到以下参数在样板代码中重复了很多,但我似乎还没有使用它们?
(object sender, EventArgs e)
例如,如果我双击一个新按钮,则事件的方法具有这些参数,但是当我向该方法添加代码时,我不使用这些参数。
它们是什么,我什么时候使用它们?
发送者是事件的发起者——因此您可能有多个按钮使用相同的点击处理程序,并且您希望禁用被点击的任何按钮,例如。当然,如果您只使用事件处理程序来订阅单个源的事件,这并不是非常有用。
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);
}