天天看點

用一個簡單的例子來演繹事件委托

本篇博文,Insus.NET想使用一個超簡單的例子來演繹事件委托。

我們在開發網頁時,剛開始時在網頁的頂部放一個铵鈕(web

control),想實作一個功能。

在xxx.aspx.cs:

OK,某一天,此網頁的内容随時間而增長,出現了滾屏。想在網頁的底再放一個铵鈕,這個铵鈕執行事件跟網頁頂部铵鈕一的事件一樣的。

這樣子,不管是點選按哪一個铵鈕,所執行的事件是一樣的:

也許一開始你并沒有想到onClick的事件名,直接使用铵鈕一的onClick的名稱,而是如下面的寫法:

在xxx.aspx.cs,我們會使用習慣的習慣,拷貝铵鈕一的事件粘貼在铵鈕二的事件裡:

呵呵,此時網頁在運作時,點選按鈕二與點選铵鈕一執行的是相同的事情。

某一天,你回過頭來Review你寫的代碼,會發現代碼已經備援了,你會建一個私有方法,把铵鈕一或二的事件代碼粘貼于這個方法内,然後在铵鈕一或二執行這個方法即可。

 上面好象沒有看到任何事件委托情形。沒有關系,我們稍改一下xxx.aspx寫法吧,在網頁中,不寫onClick事件,而是在cs中産生:

然後在xxx.aspx.cs:

此時,網頁運作起來,沒有什麼不同。執行事件與效果跟前面動畫示範一樣。

我們再重新看看這個xxx.aspx.cs的代碼:

發現:

所執行的代碼完全一樣,隻是這個事件名稱不同。

既然一樣,我們就可以跟上面重構方法一樣,定義一個相同的名稱,參照下面五個步驟:

最後再重構一步:

把xxx.aspx.cs所有注釋删除,此時,我們看到了事件的委托: