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

2022-03-16 03:58:04 字數 1889 閱讀 3516

在講委託,事件之前,我想問大家乙個非常簡單的問題,也許在我們日常的程式設計中基本上每天都會遇到,但是卻往往不去了解的地方,請以下**:

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#委託與事件講解(一)

大白話系列之c#委託與事件講解(二)

為什麼我們做不到【領導篇】

為什麼我們做不到【員工篇】

大白話系列之C 委託與事件講解 一

從序言中,大家應該對委託和事件的重要性有點了解了吧,雖然說我們現在還是能模糊,但是從我的大白話系列中,我會把這些概念說的通俗易懂的。首先,我們還是先說說委託吧,從字面上理解,只要是中國人應該都知道這個意思,除非委託2個中文字不認識,舉個例子,小明委託小張去買車票。但是在我們的程式世界裡,也是這麼的簡...

大白話系列之C 委託與事件講解 一

從序言中,大家應該對委託和事件的重要性有點了解了吧,雖然說我們現在還是能模糊,但是從我的大白話系列中,我會把這些概念說的通俗易懂的。首先,我們還是先說說委託吧,從字面上理解,只要是中國人應該都知道這個意思,除非委託2個中文字不認識,舉個例子,小明委託小張去買車票。但是在我們的程式世界裡,也是這麼的簡...

大白話系列之C 委託與事件講解 一

從序言中,大家應該對委託和事件的重要性有點了解了吧,雖然說我們現在還是能模糊,但是從我的大白話系列中,我會把這些概念說的通俗易懂的。首先,我們還是先說說委託吧,從字面上理解,只要是中國人應該都知道這個意思,除非委託2個中文字不認識,舉個例子,小明委託小張去買車票。但是在我們的程式世界裡,也是這麼的簡...