在講委託,事件之前,我想問大家乙個非常簡單的問題,也許在我們日常的程式設計中基本上每天都會遇到,但是卻往往不去了解的地方,請以下**:
protected void page_load(object sender, eventargs e)
protected void grdbill_rowdeleting(object sender, gridviewdeleteeventargs e)
看完之後大家是不是很熟悉,是不是我們每天都遇到過的,但是大家有沒有想過所有方法中的兩個引數(sender,e),到底是什麼意思,有的人可能會說,這些
會馬上得出查詢結果
第乙個,sender,也就是引起事件的那個物件
第二個,e,包含了事件的資訊
哦!第乙個表示事件的物件,第二個表示事件的資訊,貌似好像雲裡霧裡的,接著查:
摘自網路的師生的一段對話:
大李推了推眼鏡,反問我道:「你應該對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#給我們這樣利器,我會在下一講使用大白話的方式、從潛入深的講解。
首頁推薦不能放,我就放這裡好了
大白話系列之C 委託與事件講解(序言)
在講委託,事件之前,我想問大家乙個非常簡單的問題,也許在我們日常的程式設計中基本上每天都會遇到,但是卻往往不去了解的地方,請以下 protected void page load object sender,eventargs e protected void grdbill rowdeleting...
C 委託與事件講解 三
protected void btnsearch click object sender,imageclickeventargs e 那他們到底表示什麼呢?在回答上面的問題之前,我們先搞懂 net framework的編碼規範 一 委託型別的名稱都應該以eventhandler結束。二 委託的原型定...
C 委託與事件講解 二
什麼是事件?event?點選事件?載入事件?一連串的模糊的概念衝擊著我們弱小的腦袋 那我們首先來看一下比較正統的感念吧 事件是類在發生其關注的事情時用來提供通知的一種方式。事件的發生一般都牽扯2個角色 事件發行者 publisher 乙個事件的發行者,也稱作是傳送者 sender 其實就是個物件,這...