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灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP