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

Qas*_*sim 39 c# asp.net

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

例子会更有帮助.

Vin*_*wan 48

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!";
}
Run Code Online (Sandbox Code Playgroud)

编辑: 单击按钮时,将触发btn_Click事件处理程序."对象发送者"部分将是对单击按钮的引用


Jam*_*iec 28

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

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

对于您提到的事件,这两个参数都不是特别有用.将始终只提高了活动页面,并且EventArgsEmpty因为有关于该事件没有进一步的消息.

在两个参数分别看,这里有一些例子,他们有用的.

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.
}
Run Code Online (Sandbox Code Playgroud)

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

e

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

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

  • +1可取消事件.Windows应用程序世界中有哪些真实示例?谢谢. (6认同)