程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB.NET >> VB.NET之旅(十二)—事情驅動

VB.NET之旅(十二)—事情驅動

編輯:VB.NET

VB.NET之旅(十二)—事情驅動。本站提示廣大學習愛好者:(VB.NET之旅(十二)—事情驅動)文章只能為提供參考,不一定能成為您想要的結果。以下是VB.NET之旅(十二)—事情驅動正文


“可視承繼原來這麼方便!”我心中默默地感慨一聲。一會兒之後 ,我低頭掃了一眼屏幕上的代碼後,忽然發現了一個新問題,按鈕的單擊事情程 序如今曾經變成了:

而原來的VB順序是那麼的復雜。如今的參量Sender和e是干什麼用的?那個 Handles又是什麼東東?還好有教師,我立即起身,厚著臉把大李請過去,把疑問 逐個說給他聽。

大李推了推眼鏡,反問我道:“你應該對Windows編 程中的事情驅動順序設計很熟習吧?”(注:此處的Windows是指Win9X及其 以上的操作零碎)

“是呀!”看來反問是大李授課的開篇詞了,但我也只好先往他的 圈套裡跳,“事情驅動就是說使用順序的執行流程是由外界發作的事情所確 定的。也就是承受就任務才任務的形式。事情就是一個信號,它告知使用順序有 重要狀況要發作。實踐上的執行狀況是,各個使用順序把擔任不同任務的對象在 其運轉時期送入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類的實例。”大李持續講解著 。

“哦,也就是說e是和事情親密相關的喽?”我開端用實踐 操作來證明一下,我在代碼窗口的“類名”下拉列表中選擇了Button1 ,在其左邊的“辦法稱號”下拉列表中選擇了MosueDown辦法,呈現的 就是Button1.MouseDown事情處置順序代碼段:

Private Sub 

Button1_MouseDown(ByVal sender As Object, ByVal e As 

System.Windows.Forms.MouseEventArgs) 
    Handles Button1.MouseDown 
End Sub

果真,看到e的類型變為 System.Windows.Forms.MouseEventArgs。我在代碼段內寫下e,然後在其後打一 個點,呈現了一個智能感知菜單(如圖1所示):

與button1.click事情相 比,button1.Mosuedown事情中的e的屬性和辦法多出了五個描繪事情特征的屬性 ,見表1所述。

表1 多出的e的屬性

“我明白了,那麼Handles關鍵字是不 是就是用於聲明代碼是要處置哪個事情的處置進程呢?”我終於開了點竅。

“是的,可不要小看Handles,好好應用它,你的順序會變得簡約和 靈敏。”大李邊說邊給我寫了一段代碼:

Private Sub 

Button1_Click(ByVal sender As System.Object, ByVal e As 

System.EventArgs) _ 
    Handles Button1.Click, Button2.Click 
    Select Case sender.name 
      Case "Button1" 
        MsgBox("你點擊的是button1") 
      Case "Button2" 
        MsgBox("你點擊的是button2") 
    End Select 
End Sub

“在Handles前面寫了兩個事情的聲明,就可以在同一段 代碼中對兩個對象停止控制。另外,應用Sender和e我們還可以更方便地構建與調 用自己的事情處置順序。“大李邊寫邊說。

“是嗎?怎樣完成 ?”我不由被激起出了濃濃的興味。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved