Visual_Basic 板


LINE

★ 程式執行的開始點 程式的執行一定會有一個開始點(啟動物件),vb 預設的開始點為表單(Form)。 建立一個標準執行檔專案後,專案內會包含一個表單, 並自動命名為 Form1,此專案的開始點則設為 Form1。 除了表單之外,vb 也允許開始點為一個 Sub Main()。(main的大小寫沒差) Q: Sub Main() 該放在哪呢? A: Sub Main() 要自行輸入在一般模組中。 建立方法 → 專案功能表 → 新增模組 → 在模組的程式碼視窗中輸入 Sub Main() '要執行的程式碼 xxx End Sub ★ 程式運行的過程 ┌→ Sub Main() → 執行 xxx ────→ 結束 │ (End Sub) │ 啟動 ┤ │ │ (End Sub) └→ 載入表單 ────→ 控制權轉給表單 → 表單被載出 → 結束 也就是說,只要有一個 Sub 程序還在運行中,程式就不會結束,不會離開記憶體。 這時 vb 有提供 End 陳述式來終止程式的執行,在需要的時候可使用此陳述式直接終止 程式的執行。 但是此陳述式相當於電腦直接按下電源關閉一樣,非正常結束工作,可能會發生一些錯 誤,所以不建議使用 End 陳述式來終止程式的執行。 那麼,除了 End 陳述式外還有一個 Unload 陳述式,Unload 的用途是將一個物件載出 記憶體,物件可為表單、動態控制項、或其它動態新增的物件等。當下達 Unload 命令 時,會觸發 Unload 事件,執行一些載出前必要的動作後,才離開記憶體。當記憶體中 不再有任何物件及程序時,執行檔才會完全結束工作,離開記憶體。 ★ 安全結束程式的技巧: 1. 結束程式時,要求載出所有表單物件。 For Each e In Forms Unload e Next 2. 使用 Timer 控制項,在結束時啟動 Timer(Timer1.Enabled = True),由 Timer 的 事件去自動關閉所有物件。 3. 善用 Error 處理程序,避免發生不可預知的意外狀況。 4. 結束忙碌中程序的方法,使用共用變數通知該程序結束工作。 Dim Quit As Boolean, Busy As Boolean Private Sub Command1_Click() Busy = True Do 執行敘述 If Quit Then Exit Do Loop Until 條件成立 If Quit Then Unload Me Busy = False End Sub Private Sub Command2_Click() If Busy Then Quit = True Else Unload Me End Sub ★ 表單模組、一般模組與物件類別模組 vb 標準執行檔專案的預設是表單模組,也就是 Form1, Form2, ... 等等。 表單模組的副檔名為 frm。 一般模組的副檔名為 bas。(同 QBasic 的副檔名) (Sub Main 就放在此處) 新增一般模組的方法:專案功能表 → 新增模組 右方的專案總管視窗就會多出一個模組圖示,「Module1 (Module)」。 物件類別模組的副檔名為 cls。 新增的方法:專案功能表 → 新增物件類別模組 「Class1 (Class)」 所有 Sub、Function、變數 預設都是私有的(Private) 例如: Dim x As Integer '私有變數 Private y As Integer '私有變數 Public z As Integer '共有變數 表單及物件類別的變數、程序,欲在其它模組中引用,必須要加上模組名稱。 一般模組則不用,但如果有重覆名稱,一樣必須加上模組名稱。 範例1: ' Form1: Public count As Integer ' Module1: Public orz As Integer, xd As Boolean Sub Main() Msgbox "你共輸入了 " & form1.count & " 個字" Msgbox "你共買了 " & class1.count & " 本書" Msgbox "一號 Orz 等於 " & Module1.orz ' Module1可省略 Msgbox "二號 Orz 等於 " & Module2.orz ' Module2不可省略 Msgbox "艾克斯滴 等於 " & xd End Sub ' Module2: Public orz As Integer ' Class1: Public count As Long 範例2:( 啟動物件為Sub Main() ) ' Form1: Public i As Integer Sub Command1_Click() Debug.Print i '輸出結果為 0 Debug.Print Module1.i '輸出結果為 7 Form1.i = Module1.i * 2 Debug.Print i '輸出結果為 14 Debug.Print Module1.i '輸出結果為 7 End Sub 'Module1: Public i As Integer Sub Main() '程式進入點 i = 7 Form1.Show '控制權轉給表單 End Sub ※ 說的不完善或辭不達意的地方,請多見諒。 ... 冏rz -- 人若無星爺,跟條鹹魚有何分別? --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.58.156.43
1F:推 JJss:優良文章 ^_^b 220.134.24.9 04/03







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:iOS站內搜尋

TOP