程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
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之旅(十三)—規范事情處置順序正文


“感興味就好!”大李輕輕點搖頭,然後問我道,“你知道 順序是怎樣知道哪些對象可以引發何種事情,以及怎樣樣把事情和事情處置順序 關聯起來?”

見到我迷茫的眼神,大李用鼠標點擊翻開被region合 起來的“windows 窗體設計器生成的代碼”,指著兩頭的一句自動生 成的代碼:

friend withevents button1 as system.windows.forms.button

“當你在設計窗口往窗體上添加了一 個按鈕後,會自動在代碼中參加這句代碼,friend 關鍵字授予對一個或多個所聲 明的編程元素的友元訪問權限。那麼withevent是干什麼的?”

我立 刻在協助中查找,有了:

withevents 關鍵字指示被聲明的對象變量援用 可以引發事情的類實例。

“明白了,”我也不能總傻聽著, “在聲明對象的時分用withevents來停止標識,再在事情處置順序中的進程 聲明開頭處運用 handles 關鍵字將就可以處置由運用 withevents 關鍵字聲明的 對象變量所引發的事情了。”

“沒錯,你看來我寫一段代碼, 運用的就是withevent-handles的辦法來處置事情。類名為chenry吧,它內含一個 事情eventhr。”

module module1
     public class chenry
        public event eventhr()    ´ 聲明一個事情
        sub causesomeevent()
            raiseevent eventhr()   ´ 引發事情
        end sub
    end class
 
    withevents obj as new chenry()   ´模塊或類級別的聲明
    sub obj_eventhr() handles obj.eventhr ´在handles之後聲明事

件
        msgbox("事情處置器捕獲到了事情.")   ´處置事情.
    end sub
    sub main()
        obj.causesomeevent()   ´調用對象去引發事情
    end sub
end module

“你要留意的是怎樣樣經過raiseevent來引發事情, 另外一個很復雜的問題也需求留意的是,事情處置順序的命名普通是用‘對 象名_事情名’的方式。”大李邊寫順序邊指點說。

“事 件的聲明和引發是只能在一個層次內,還是可以在派生類裡引發基類的事情? ”我不由獵奇地問。

“你開端學會考慮了,”大李不知 道是不是在讪笑我,“vb.net要求必需在聲明事情的范圍內引發事情。派生 類不能引發從基類承繼的事情,但是可以處置基類引發的事情。我們可以來看一 個示例。”大李馬上對剛寫的代碼停止了修正:

module module1
     public class chenry
        public event eventhr()    ´ 聲明一個事情
        sub causesomeevent()
            raiseevent eventhr()   ´ 引發事情
        end sub
    end class
    public class class2  ‘從chenry派生而來的類
        inherits chenry
        sub obj_eventhr() handles mybase.eventhr
            msgbox("事情處置器捕獲到了事情.")   ´處

理事情.
        end sub
    end class
 
    withevents obj as new class2()   ´模塊或類級別的聲明
    sub main()
        obj.causesomeevent()   ´調用對象去引發事情
    end sub
end module

“還記得我跟你說過mybase的意義了吧?(注:詳見 《結構與析構》一篇)我們可以添加 handles mybase.<event name> 語句 來聲明派生類中的事情處置順序。問一個根本的問題,你看obj是class2類的一個 實例對吧?但為什麼它也具有chenry類才有的causesomeevent辦法?”大李 說得我眼球都快掉上去了。

“當然是由於class2是chenry類的派生 類,承繼了它的辦法呗。”我神情極為懊喪。

“哈哈,別急呀 ,在vb.net中我們最常碰到的就是面向對象的問題。不時回憶有益處,溫故而知 新!”大李最後的淺笑對我倒不啻為一句忠告。要學好vb.net,我還真得好 好溫習一上面向對象的內容。

大李話題一轉,淡淡地跟我說: “withevents 語句和 handles 子句提供了規范的陳說性指定事情處置順序 的辦法。也就是如何把對象的事情和某一個事情處置順序停止關聯。withevents 所聲明對象引發的事情可以由任何進程用命名此事情的 handles 子句來處置。換 句話說,有handles子句標識的事情處置順序也只能處置由withevents聲明的對象 。雖然 handles 子句是關聯事情與事情處置順序的規范辦法,它僅限於在編譯時 關聯事情與事情處置順序。還有一種辦法可以允許在運轉時靜態地將事情與一個 或更多的事情處置順序銜接或許斷開,而並不要求運用 withevents 來聲明對象 變量。”

“是嗎?”我一下子從深思中驚醒過去,獵奇 心又一次襲來。

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