60

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

例子会更有帮助。

4

2 回答 2

65

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

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

事件参数类: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 事件处理程序。“对象发送者”部分将引用被点击的按钮

于 2013-01-23T12:03:19.630 回答
37

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

  • sender: 引发事件的对象
  • eEventArgs在许多情况下,包括一个从 . 继承的对象的实例EventArgs。包含有关事件的附加信息,有时提供处理事件的代码以某种方式改变事件的能力。

对于您提到的事件,这两个参数都不是特别有用。只有一页报道了这些事件,并且EventArgs没有Empty关于该事件的更多信息。

分别查看这 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. Cancel该对象在事件参数上添加了一个简单的布尔属性。处理此事件的代码可以取消该事件:

private void HandleCancellableEvent(object sender, CancelEventArgs e)
{
    if(/* some condition*/)
    {
       // Cancel this event
       e.Cancel = true;
    }
}
于 2013-01-23T12:06:29.010 回答