“对象发送者”和“EventArgs e”参数有什么用?

Page_LoadInit和其他页面事件的情况下,这些(object sender, EventArgs e)参数的用途是什么?

例子会更有帮助。

EventArgs e是一个名为e的参数,包含事件数据,有关详细信息,请参阅EventArgs MSDN页面。

Object Sender是一个名为Sender的参数,它包含对引发事件的控件/对象的引用。

事件Arg类: http : //msdn.microsoft.com/en-us/library/system.eventargs.aspx

例:

 protected void btn_Click (object sender, EventArgs e){ Button btn = sender as Button; btn.Text = "clicked!"; } 

编辑:单击按钮时,将触发btn_Click事件处理程序。 “对象发件人”部分将是对单击按钮的引用

按惯例,这两个参数(或变体)按所有事件发送。

  • sender :引发事件的对象
  • 一个EventArgs的实例,在很多情况下,包括一个inheritance自EventArgs的对象。 包含有关事件的其他信息,有时还提供处理事件的代码以某种方式更改事件的能力。

对于您提到的事件,这两个参数都不是特别有用。 只有一页提升事件, EventArgsEmpty因为没有关于该事件的进一步信息。

分别查看2个参数,下面是一些有用的示例。

sender

假设您在表单上有多个按钮。 这些按钮可以包含一个Tag描述点击它们应该做什么。 您可以使用相同的处理程序处理所有Click事件,并根据sender执行不同的操作

 private void HandleButtonClick(object sender, EventArgs e) { Button btn = (Button)sender; if(btn.Tag == "Hello") MessageBox.Show("Hello") else if(btn.Tag == "Goodbye") Application.Exit(); // etc. } 

免责声明:这是一个人为的例子; 不要那样做!

e

有些活动可以取消。 他们发送CancelEventArgs而不是EventArgs 。 此对象在事件args上添加一个简单的布尔属性Cancel 。 处理此事件的代码可以取消事件:

 private void HandleCancellableEvent(object sender, CancelEventArgs e) { if(/* some condition*/) { // Cancel this event e.Cancel = true; } }