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

why*_*heq 2 c# events winforms

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

(object sender, EventArgs e)

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

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

Jon*_*eet 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);
}
Run Code Online (Sandbox Code Playgroud)