在Page_Load
、Init
和其他页面事件的情况下,这些(object sender, EventArgs e)
参数有什么用?
示例会更有帮助。
>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!";
}
编辑:单击 Button 时,将触发 btn_Click 事件处理程序。"对象发送者"部分将是对单击的按钮的引用
惯例,这两个参数(或变体)与所有事件一起发送。
-
sender
:引发事件的对象 -
e
EventArgs
的实例,在许多情况下,包括从EventArgs
继承的对象。包含有关事件的其他信息,有时还提供处理事件的代码以以某种方式更改事件的功能。
对于您提到的事件,这两个参数都不是特别有用。只有一页提出事件,EventArgs
Empty
,因为没有关于该事件的更多信息。
分别查看这两个参数,以下是它们有用的一些示例。
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;
}
}