簡體   English   中英

“對象發送者”和“EventArgs e”參數有什么用?

[英]What is the use of “object sender” and “EventArgs e” parameters?

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 :引發事件的對象
  • e的一個實例EventArgs包括,在許多情況下,它從繼承對象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.
}

免責聲明:這是一個人為的例子; 不要那樣做!

e

有些活動可以取消。 他們發送CancelEventArgs而不是EventArgs 此對象在事件args上添加一個簡單的布爾屬性Cancel 處理此事件的代碼可以取消該事件:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM