首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >“对象发送者”和"EventArgs e“参数的用途是什么?

“对象发送者”和"EventArgs e“参数的用途是什么?
EN

Stack Overflow用户
提问于 2013-01-23 19:56:07
回答 2查看 193.3K关注 0票数 57

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

示例会更有帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-23 20:03:20

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

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

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

示例:

代码语言:javascript
复制
protected void btn_Click (object sender, EventArgs e){
   Button btn = sender as Button;
   btn.Text = "clicked!";
}

编辑:单击按钮时,将触发btn_Click事件处理程序。"object sender“部分将引用所单击的按钮

票数 62
EN

Stack Overflow用户

发布于 2013-01-23 20:06:29

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

  • sender:已引发event
  • e的对象EventArgs的实例,在许多情况下,包括从EventArgs继承的对象。包含有关事件的其他信息,有时还提供处理事件的代码以某种方式更改事件的功能。

对于您提到的事件,这两个参数都不是特别有用。永远只有一个页面引发事件,并且EventArgsEmpty,因为没有关于事件的进一步信息。

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

sender

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

代码语言:javascript
复制
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。处理此事件的代码可以取消此事件:

代码语言:javascript
复制
private void HandleCancellableEvent(object sender, CancelEventArgs e)
{
    if(/* some condition*/)
    {
       // Cancel this event
       e.Cancel = true;
    }
}
票数 35
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14479143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档