2013-01-23 24 views
2

我沒有找到.NET Events - What are object sender & EventArgs e?帖子非常有幫助。.Net事件 - 什麼使用(對象發件人,EventArgs e)參數在事件以外的其他事件onClick

它主要說明在onClick場景下如何使用參數(object sender,EventArgs e),這是明顯的用法。

我的問題是:

忽略了的onClick功能

即在Page_Load中,初始化和其他頁面事件

的情況下,有什麼用這些的(對象發件人,EventArgs的)參數?

例子會更有幫助:-)

回答

2

使用標準(類似)的簽名,如(sender, eventargs)是有益的,因爲

  • 它足夠靈活和通用服務器的許多場景。作爲新手的標準模板
  • 類似的簽名增加了對模式的熟悉程度,有助於減少初學者的學習時間
  • 在事件代理級別和處理程序級別都實現了可重用性。

現在,一旦你接受/同意一些標準,你需要堅持他們(即使在某些情況下,它可能是沒有意義只要存在關聯沒有巨大的成本)。 .NET Fx開發人員已經決定使用這個標準事件模板,並且您將在哪裏看到任何地方。

我們舉一個Page_Load的例子 - 這個事件實際上是在Control level處聲明的。所以有可能某些代碼可能選擇使用相同的事件處理程序處理多個控件的加載事件,並使用sender參數來應用特定的事情。

+0

你的答案涵蓋了大部分,但我沒有得到什麼是你在上一段所述的情況。因爲據我所知** ISAPI **做從HttpModule調用HttpHandler然後**頁面事件* *然後最後是模塊事件。控件如何調用頁面事件,即Page_Load ..因爲它們按照順序執行! 你能舉個例子嗎? – khurram

+0

@khurram,我看過的例子只是簡單地強調了一個有效的用例,因爲* Control.Load事件(它被繼承爲「Page.Load」)顯然沒有用*發送者參數。但是你錯過了整個觀點 - .NET Fx開發者選擇爲他們的事件制定一個標準模板(並且你不會在個別情況下偏離標準)。 – VinayC

+0

夠公平!謝謝 :-) – khurram

2

那麼它很簡單:

object sender是發出該事件的實體 - 我敢肯定它是網頁本身在Page_Load中的情況下,由於該頁面正在發送事件(因此this == sender應該在頁面中爲true)。 EventArgs e很無聊(它是一個基類),但是其他事件會帶來更多有趣的類來告訴關於事件的一些事情,所以例如onMouseDown-Event會在屏幕上顯示有關鼠標位置的數據。 其他事件可能會帶來其他數據 - 但大多數情況下事件本身和發件人都足以獲取所需的所有數據。

+0

你是什麼意思**可能是頁面本身**? Page_Load之前執行的事件數是4 ** Pre_Init,Init,InitComplete和Preload **那麼它們呢? :/ ** EventArgs e很無聊**不合理的事情:-)因爲如果它在那裏,它有一些用處。 如果你有任何想法會照顧一點點? :-) – khurram

+0

這4個事件是_aspx生命週期的一部分(谷歌,如果你想知道更多,page_load後有很多事件)。 EventArgs是無聊的,因爲它是一個基類,請參閱http://msdn.microsoft.com/en-Us/library/vstudio/118wxtk3.aspx#inheritance繼續看看哪些其他的子類存在,這可能不是「無聊」 – TGlatzer

+0

兄弟我已經通過了..我只想說如果他們是生命週期事件..應該不需要參數! – khurram

相關問題