大白話系列之C#委託與事件講解(序言)

轉自:http://www.cnblogs.com/wudiwushen/archive/2010/04/20/1698795.htmlhtml

 

 

在講委託,事件以前,我想問你們一個很是簡單的問題,也許在咱們平常的編程中基本上天天都會遇到,可是卻每每不去了解的地方,請如下代碼:
protected void Page_Load(object sender, EventArgs e)
{程序員

}編程

protected void btnSearch_Click(object sender, ImageClickEventArgs e)
{windows

}網絡

protected void grdBill_RowDataBound(object sender, GridViewRowEventArgs e)
{
           
}框架

 protected void grdBill_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
            
}操作系統

看完以後你們是否是很熟悉,是否是咱們天天都遇到過的,可是你們有沒有想過全部方法中的兩個參數(sender,e),究竟是什麼意思,有的人可能會說,這些設計

都是VS編譯環境自動生成的,搞的這麼清楚幹什麼,能用就好了唄,不就是個窗體加載事件、點擊按鈕事件嘛,第二種人可能立刻會去百度,谷歌一下orm

會立刻得出查詢結果
第一個,sender,也就是引發事件的那個對象
第二個,e,包含了事件的信息htm

哦!第一個表示事件的對象,第二個表示事件的信息,貌似好像雲裏霧裏的,接着查:
摘自網絡的師生的一段對話:

大李推了推眼鏡,反問我道:「你應該對Windows編程中的事件驅動程序設計很熟悉吧?」

「是呀!」看來反問是大李授課的開篇詞了,但我也只好先往他的圈套裏跳,「事件驅動就是說應用程序的執行流程是由外界發生的事件所肯定的。也就是接受到任務才工做的模式。事件就是一個信號,它告知應用程序有重要狀況要發生。實際上的執行狀況是,各個應用程序把負責不一樣工做的對象在其運行期間送入Windows操做系統,讓這些對象等待Windows產生的事件,而後加以處理。」

 

「VB程序員通常也只須要象你這樣理解就好了。」大李的話真讓我觸動,「應該說是Windows先產生消息,應用程序中的窗口程序window procedure能接收來自windows的消息,並將其轉化爲事件,這個咱們之後再說。如今來看看事件驅動程序的組成,主要是有事件、對象和事件處理程序三個要素。對象就是完成任務的主體,好比你說的Button1;事件麼,就是對象要執行的任務,好比單擊,就是click事件;那麼事件處理程序就是Button1_Click這段程序了。」

 

「這個我知道呀!我只是想問一下Sender……」我疑惑地迴應道。

 

大李哥搖搖手,打斷了個人話。「若是你真正清楚事件驅動的話,就明白了。你看一下,Sender是什麼類型的變量?」

 

「object呀!」我無奈地問道着,「可是,……」我隱約感受到了什麼。

 

大李微笑着說,「sender as object,就一語道破它的來源與用途。object是支持 .NET 框架類層次結構中的全部類,併爲派生類提供低級別服務。這是 .NET 框架中全部類的最終超類;它是類型層次結構的根。通常來講,sender在形參中表示引起事件的源頭,就是我剛纔所說的三要素中的‘對象’。若是在控件引起的事件中寫代碼的話,通常都不須要再從新指派,由於它已經默認爲是該控件了。當本身寫代碼來調用某事件程序時,就要註明sender是何物了。」

 

「也就是說,sender是提供給在事件處理程序代碼內部或外部進行調用的嗎?」我仍有點不明白。

 

「能夠這樣說,你難道看不出VB.NET提供給咱們的是更全面、更直接的控制嗎?再說e,表示的是事件數據,就是一個事件激發所須要的狀態信息。在事件引起時不向事件處理程序傳遞狀態信息的事件會將e設爲Eventargs。若是事件處理程序須要狀態信息,則應用程序必須今後類派生一個類來保存數據。好比Mousedown事件,系統須要判斷mouse的位置、判斷是左中右哪一個鍵點擊了、判斷點擊了幾下等等,所以該e就必需是System.Windows.Forms.MouseEventArgs類的實例。」

 

看完這段對話後,你們可能對什麼是Sender和e,有了初步的瞭解,可是讓你應用,或者更深層次的觸類旁通,我想不少人只能呆坐了。

以上只是我引出委託、事件的序言而已,委託與事件的使用普遍,是毋庸置疑的,可是在咱們平常編程中,怎麼去應用來更好的使用C#給咱們這樣利器,我會在下一講使用大白話的方式、從潛入深的講解。

相關文章
相關標籤/搜索