Visual Basic(簡稱VB)是Microsoft開發的一種(zhong)面向對象的編程語(yu)言。使用(yong)Visual Basic即可(ke)快(kuai)速、輕松地創建(jian)類型安全的.NET應(ying)用(yong)。
“Visual”指(zhi)(zhi)的(de)(de)是開發圖(tu)形用戶(hu)界(jie)面(GUI)的(de)(de)方法——不需編寫(xie)大(da)量代碼去(qu)描述(shu)界(jie)面元素的(de)(de)外觀和位置,而只要(yao)把(ba)預先建立的(de)(de)對象add到屏幕上的(de)(de)一(yi)點即可。“Basic”指(zhi)(zhi)的(de)(de)是BASIC(Beginners All-Purpose Symbolic Instruction Code)語(yu)言(yan),是一(yi)種在(zai)計(ji)算技術(shu)發展歷史上應用得最(zui)為廣泛的(de)(de)語(yu)言(yan)。
Visual Basic源自于BASIC編程語言。VB擁有(you)圖形用(yong)(yong)(yong)戶界面(GUI)和快速(su)應用(yong)(yong)(yong)程序開發(RAD)系(xi)統,可(ke)以(yi)輕易的(de)使用(yong)(yong)(yong)DAO、RDO、ADO連(lian)接數(shu)據庫,或者輕松的(de)創建(jian)Active X控件,用(yong)(yong)(yong)于高(gao)效生(sheng)成(cheng)類(lei)型安全和面向(xiang)對象的(de)應用(yong)(yong)(yong)程序。程序員可(ke)以(yi)輕松的(de)使用(yong)(yong)(yong)VB提供(gong)的(de)組件快速(su)建(jian)立(li)一個(ge)應用(yong)(yong)(yong)程序。
VB 6.0 啟動畫面
1991年(nian)4月,微軟(ruan)(ruan)公司(si)推出(chu)了Visual Basic 1.0Windows版本,這個連接編程(cheng)(cheng)語言和用戶界面的(de)進步被(bei)稱為Tripod(有(you)些時候叫做Ruby),最初的(de)設計是(shi)由阿蘭·庫珀(Alan Cooper)完成的(de)。在(zai)當時,它是(shi)第一個“可視”的(de)編程(cheng)(cheng)軟(ruan)(ruan)件。
而后多(duo)年,Visual Basic經過多(duo)次發(fa)展,其發(fa)展歷程展示(shi)在“Visual Basic發(fa)展簡史”表中。
在(zai)2020年(nian)3月(yue)11日,微(wei)軟(ruan)宣布(bu)不會(hui)再開發VB或增加功能(neng)。
Visual Basic 發展簡史
發布(bu)日(ri)期 名稱 說明(ming)
.NET Framework 引入之前
Apr-91 Visual Basic 1.0 Windows 版(ban)本(ben)
Sep-92 Visual Basic 1.0 DOS 版本
Nov-92 Visual Basic 2.0 對于上一個版本的界面和速(su)度都有所改善。
Jun-93 Visual Basic 3.0 包(bao)含一個(ge)數據引擎,可以直(zhi)接讀取Access數據庫。
Aug-95 Visual Basic 4.0 發布(bu)了32位和16位的版本。其中包含(han)了對(dui)類的支(zhi)持。
Feb-97 Visual Basic 5.0 包含了(le)對用(yong)戶自建(jian)控(kong)件的支持,且從(cong)這(zhe)個版本開(kai)始VB可以支持中文。
Oct-98 Visual Basic 6.0
.NET Framework 引入之(zhi)后
Feb-02 Visual Basic .NET 2002 (7.0) 由于其(qi)使用了新的核心和特性,所(suo)以很多VB的程序員(yuan)都(dou)要改寫(xie)程序。
Apr-03 Visual Basic .NET 2003 (7.1) 主(zhu)要改進(jin)了運(yun)行(xing)狀況,提(ti)升了IDE以及運(yun)行(xing)時穩定(ding)性。
Nov-05 Visual Basic 2005 (8.0) 是(shi) vb .net 的重大轉變,微軟決意在其名(ming)稱中去掉了".NET"部份。VB2005提供My偽命(ming)名(ming)空間、泛型、操作符重載等新語言特性。
Nov-07 Visual Basic 2008 (9.0)提供支持(chi)IIF函數(shu)、匿名類(lei)、LINQ、Lambda表達式、XML數(shu)據結構等新語(yu)言特性。
Mar-08 微軟宣布結束對于 VB 6.0的延(yan)長支持(chi)。
Apr-10 Visual Studio 2010 (10.0)提供支持Dynamic Language Runtime (DLR)、自動實現屬(shu)性、集合初始化(hua)、不需(xu)要在(zai)代碼斷(duan)行書寫(xie)時輸入(ru)下劃線“_”等(deng)新(xin)語言特(te)性。
May-12 Visual Studio 2012 (11.0) RC 提供支持更簡(jian)易(yi)的(de)異步(bu)編程(Asynchronous Programming)、Iterator、擴(kuo)充Global 關鍵詞等新語言特(te)性(xing)。
2014-11-13-2 Visual Studio 2013
2014/11/13 Visual Studio 2015 Windows、iOS以及Android應用(yong)開發
在VB中,注釋(shi)有(you)2種方式。
1.以Rem關鍵字開頭,并且(qie)Rem關鍵字與(yu)注釋內容(rong)之(zhi)間要(yao)加一個(ge)空格(ge)。注釋可(ke)以是單獨的一行(xing),也可(ke)以寫在其他(ta)(ta)語句行(xing)的后面。如果在其他(ta)(ta)語句行(xing)后使用Rem關鍵字,則必須使用冒號(hao)(:)與(yu)語句隔開。
2.使用(yong)(yong)一個(ge)撇號(hao)(')來代替Rem關鍵字。若使用(yong)(yong)撇號(hao),則(ze)在其他語句行使用(yong)(yong)時不必加冒號(hao)。
在Visual Basic中,可通過(guo)屬性(xing)、方法(fa)和事件來說明和衡量一個對象的(de)特征。
事件(Event)
事(shi)件(jian)(jian)是指(zhi)發(fa)生在(zai)某一(yi)對(dui)象上(shang)的事(shi)情。事(shi)件(jian)(jian)又可分(fen)為(wei)鼠標(biao)事(shi)件(jian)(jian)和(he)鍵盤事(shi)件(jian)(jian)。例如,在(zai)命令按(an)(an)鈕(Command Button)這(zhe)一(yi)對(dui)象上(shang)可能發(fa)生鼠標(biao)單擊(Click)、鼠標(biao)移動(Mouse Move)、鼠標(biao)按(an)(an)下(xia)(Mouse Down)等鼠標(biao)事(shi)件(jian)(jian),也可能發(fa)生鍵盤按(an)(an)下(xia)(Key Down)等鍵盤事(shi)件(jian)(jian)。總(zong)之(zhi),事(shi)件(jian)(jian)指(zhi)明(ming)了對(dui)象“什(shen)么情況下(xia)做?”,常用于定(ding)義對(dui)象發(fa)生某種反映的時(shi)機和(he)條件(jian)(jian)。
方法(Method)
方(fang)法(fa)(fa)是用來控(kong)制對(dui)象(xiang)(xiang)的(de)功(gong)(gong)能(neng)及(ji)操(cao)作的(de)內部(bu)程序。例如,人具(ju)有說話(hua)、行(xing)走(zou)、學習(xi)、睡覺等功(gong)(gong)能(neng),在visual Basic中,對(dui)象(xiang)(xiang)所能(neng)提供的(de)這些功(gong)(gong)能(neng)和操(cao)作,就(jiu)稱作“方(fang)法(fa)(fa)”。以窗體為例,它具(ju)有顯示(show)或(huo)隱藏(hide)的(de)方(fang)法(fa)(fa)。總之(zhi),方(fang)法(fa)(fa)指明(ming)了對(dui)象(xiang)(xiang)“能(neng)做什么?”,常用于定義對(dui)象(xiang)(xiang)的(de)功(gong)(gong)能(neng)和操(cao)作。
屬性(Property)
屬性是指用于描述對象(xiang)的(de)(de)名稱、位(wei)置、顏色、字體等特(te)征的(de)(de)一些(xie)指標。可以通過屬性改變對象(xiang)的(de)(de)特(te)性。
有(you)些屬(shu)(shu)性(xing)(xing)(xing)可以在(zai)設計時(shi)通過屬(shu)(shu)性(xing)(xing)(xing)窗口來設置(zhi),不用(yong)編寫(xie)任(ren)何代(dai)碼;而有(you)些屬(shu)(shu)性(xing)(xing)(xing)則必(bi)須通過編寫(xie)代(dai)碼,在(zai)運(yun)行程序的(de)同時(shi)進行設置(zhi)。可以在(zai)運(yun)行時(shi)讀取(qu)和設置(zhi)取(qu)值的(de)屬(shu)(shu)性(xing)(xing)(xing)成為讀寫(xie)屬(shu)(shu)性(xing)(xing)(xing),只能讀取(qu)的(de)屬(shu)(shu)性(xing)(xing)(xing)成為只讀屬(shu)(shu)性(xing)(xing)(xing)。總之屬(shu)(shu)性(xing)(xing)(xing)指明(ming)了對象(xiang)“是(shi)什么樣的(de)?”,常用(yong)于(yu)定義(yi)對象(xiang)的(de)外觀。
對象(Object)
Visual Basic.NET具有(you)“面(mian)(mian)(mian)向(xiang)(xiang)對(dui)象(xiang)(xiang)”的(de)(de)特性,Visual Basic.NET應用種程(cheng)(cheng)序(xu)的(de)(de)基本(ben)單元(yuan)是對(dui)象(xiang)(xiang),用Visual Basic.NET編(bian)程(cheng)(cheng)就是用“對(dui)象(xiang)(xiang)”組裝(zhuang)程(cheng)(cheng)序(xu)。這種“面(mian)(mian)(mian)向(xiang)(xiang)對(dui)象(xiang)(xiang)”的(de)(de)編(bian)程(cheng)(cheng)方法(fa)與(yu)傳(chuan)統的(de)(de)全部用代(dai)碼編(bian)制(zhi)程(cheng)(cheng)序(xu)的(de)(de)方法(fa)有(you)很(hen)大區別,就像用集成電路(lu)芯片組裝(zhuang)電視(shi)(shi)機(ji)和(he)用三極(ji)管(guan),二極(ji)管(guan)組裝(zhuang)電視(shi)(shi)機(ji)的(de)(de)區別一樣。顯(xian)然,“面(mian)(mian)(mian)向(xiang)(xiang)對(dui)象(xiang)(xiang)”的(de)(de)編(bian)程(cheng)(cheng)方法(fa)比(bi)傳(chuan)統的(de)(de)編(bian)程(cheng)(cheng)方法(fa)更簡單,更方便,并且編(bian)寫出的(de)(de)程(cheng)(cheng)序(xu)也更加穩定。因(yin)此,“對(dui)象(xiang)(xiang)”可以被看(kan)做Visual Basic.NET程(cheng)(cheng)序(xu)設計的(de)(de)核心(xin)。
在Visual Basic.NET程(cheng)序(xu)設計中(zhong),對象(xiang)(xiang)中(zhong)還(huan)可以包含頭,手,腿,腳等部位(wei),其中(zhong)的每個部位(wei)又可以單獨作(zuo)(zuo)為作(zuo)(zuo)為被(bei)研究的對象(xiang)(xiang)。在Visual Basic.NET程(cheng)序(xu)設計中(zhong),整(zheng)個應用(yong)程(cheng)序(xu)就是一個對象(xiang)(xiang),應用(yong)程(cheng)序(xu)中(zhong)又包含著窗(chuang)體(ti)(Form),命(ming)令按鈕(Command),菜單(Menu)等對象(xiang)(xiang)。
類(Class)
在Visual Basic.NET中(zhong),對象(xiang)是由(you)類創(chuang)建的,因此(ci)對象(xiang)可以(yi)說是類的具(ju)體(ti)實(shi)例,這(zhe)就好比是蛋(dan)糕和(he)做(zuo)蛋(dan)糕的模具(ju)之(zhi)間的關系。
各種(zhong)(zhong)不(bu)同(tong)(tong)(tong)的(de)對象(xiang)分(fen)屬于各種(zhong)(zhong)不(bu)同(tong)(tong)(tong)的(de)種(zhong)(zhong)類(lei)。同(tong)(tong)(tong)一(yi)(yi)(yi)類(lei)對象(xiang)可能(neng)具(ju)有(you)一(yi)(yi)(yi)些不(bu)同(tong)(tong)(tong)的(de)特(te)(te)征(zheng)(或是說同(tong)(tong)(tong)一(yi)(yi)(yi)類(lei)對象(xiang)不(bu)一(yi)(yi)(yi)定具(ju)有(you)完全相(xiang)同(tong)(tong)(tong)的(de)特(te)(te)性(xing));具(ju)有(you)某些相(xiang)同(tong)(tong)(tong)的(de)特(te)(te)性(xing)的(de)對象(xiang),不(bu)一(yi)(yi)(yi)定是同(tong)(tong)(tong)一(yi)(yi)(yi)類(lei)對象(xiang),這(zhe)(zhe)就(jiu)(jiu)好比是人(ren)和(he)猴子雖(sui)然都有(you)身高、性(xing)別等(deng)(deng)特(te)(te)征(zheng),但二者之間還存在著智商(shang)、語言等(deng)(deng)特(te)(te)性(xing)差異,這(zhe)(zhe)兩個對象(xiang)之間的(de)特(te)(te)性(xing)相(xiang)差很多,根本就(jiu)(jiu)不(bu)能(neng)算是同(tong)(tong)(tong)一(yi)(yi)(yi)類(lei)對象(xiang)。而(er)男人(ren)和(he)女人(ren),雖(sui)然有(you)著性(xing)別、生理等(deng)(deng)方面的(de)差異,但他(ta)們絕(jue)大(da)部分(fen)特(te)(te)性(xing)相(xiang)同(tong)(tong)(tong),可以(yi)算是同(tong)(tong)(tong)一(yi)(yi)(yi)種(zhong)(zhong)類(lei)。由此(ci),可以(yi)歸結為一(yi)(yi)(yi)句話:同(tong)(tong)(tong)一(yi)(yi)(yi)類(lei)對象(xiang)的(de)絕(jue)大(da)部分(fen)特(te)(te)性(xing)相(xiang)同(tong)(tong)(tong)。
根(gen)據(ju)應用(yong)類型,Visual Basic控件可以分為(wei)如下(xia)3類:
內置控件即Visual Basic工(gong)具箱中(zhong)的控件,里(li)面包含了(le)常(chang)見窗體程序所需(xu)要(yao)的控件
Visual Basic中,大部分的(de)程序執行都是在事件(jian)中完成的(de)。
在(zai)代(dai)(dai)碼(ma)中,控件(jian)(jian)的(de)(de)每一個(ge)事件(jian)(jian)都需要聲(sheng)(sheng)明(ming),聲(sheng)(sheng)明(ming)方法類似(si)一個(ge)子過程的(de)(de)聲(sheng)(sheng)明(ming)。大部分的(de)(de)控件(jian)(jian)在(zai)雙擊控件(jian)(jian)進入(ru)代(dai)(dai)碼(ma)界面的(de)(de)時候都會自動補完該(gai)控件(jian)(jian)的(de)(de)最常用事件(jian)(jian)的(de)(de)聲(sheng)(sheng)明(ming)。具(ju)體代(dai)(dai)碼(ma)示范如(ru)下:
ActiveX控(kong)(kong)(kong)件(jian)包(bao)含不同版(ban)本Visual Basic提(ti)供(gong)(gong)的(de)控(kong)(kong)(kong)件(jian)和僅(jin)在專業版(ban)、企業版(ban)中提(ti)供(gong)(gong)的(de)控(kong)(kong)(kong)件(jian),并且還包(bao)含第三方提(ti)供(gong)(gong)的(de)控(kong)(kong)(kong)件(jian)。ActiveX控(kong)(kong)(kong)件(jian)是對Visual Basic內(nei)置控(kong)(kong)(kong)件(jian)的(de)擴(kuo)充,開發人員(yuan)可以根據個人需要進行隨(sui)意(yi)擴(kuo)充,擴(kuo)充的(de)ActiveX控(kong)(kong)(kong)件(jian)將在工具(ju)箱中顯示。
在(zai)Visual Basic的(de)(de)(de)工具(ju)欄中(zhong),可以(yi)(yi)放置其他(ta)的(de)(de)(de)第(di)三方(fang)對象(xiang),可以(yi)(yi)像使(shi)用控件(jian)一樣輕松使(shi)用。添加后(hou)的(de)(de)(de)對象(xiang)也(ye)在(zai)工具(ju)箱中(zhong)顯示。有關第(di)三方(fang)對象(xiang),可以(yi)(yi)從受信任的(de)(de)(de)來源下載控件(jian),并通過(guo)添加引用來導入。支持這些自定義的(de)(de)(de)Vb的(de)(de)(de)控件(jian)有:ComponentOne Studio,Spread,ActiveReports、MultiRow等。
VB的(de)(de)(de)(de)(de)中心(xin)思想就(jiu)是要(yao)便于(yu)程(cheng)(cheng)(cheng)序員(yuan)使用,無論(lun)是新手(shou)或者專家。VB使用了可(ke)以(yi)簡單建立應(ying)用程(cheng)(cheng)(cheng)序的(de)(de)(de)(de)(de)GUI系統,但是又(you)可(ke)以(yi)開發相當復雜的(de)(de)(de)(de)(de)程(cheng)(cheng)(cheng)序。VB的(de)(de)(de)(de)(de)程(cheng)(cheng)(cheng)序是一種基于(yu)窗體的(de)(de)(de)(de)(de)可(ke)視化(hua)組件(jian)安排的(de)(de)(de)(de)(de)聯(lian)合,并(bing)且增(zeng)加代碼(ma)來指(zhi)定(ding)組件(jian)的(de)(de)(de)(de)(de)屬性和方(fang)法(fa)。因為默(mo)認的(de)(de)(de)(de)(de)屬性和方(fang)法(fa)已(yi)(yi)經有一部分定(ding)義在了組件(jian)內,所以(yi)程(cheng)(cheng)(cheng)序員(yuan)不用寫多(duo)少代碼(ma)就(jiu)可(ke)以(yi)完成(cheng)一個簡單的(de)(de)(de)(de)(de)程(cheng)(cheng)(cheng)序。過(guo)去的(de)(de)(de)(de)(de)版本里面 VB 程(cheng)(cheng)(cheng)序的(de)(de)(de)(de)(de)性能問題一直被放在了桌面上,但是隨著(zhu)計算(suan)機速度的(de)(de)(de)(de)(de)飛(fei)速增(zeng)加,關于(yu)性能的(de)(de)(de)(de)(de)爭(zheng)論(lun)已(yi)(yi)經越(yue)來越(yue)少。
窗(chuang)體控(kong)(kong)(kong)件(jian)(jian)(jian)(jian)的(de)(de)(de)增加和改變(bian)可以(yi)用拖放技(ji)術(shu)實現(xian)。一個排列滿(man)控(kong)(kong)(kong)件(jian)(jian)(jian)(jian)的(de)(de)(de)工具箱用來顯示可用控(kong)(kong)(kong)件(jian)(jian)(jian)(jian)(比如文(wen)(wen)本(ben)框或者按鈕)。每個控(kong)(kong)(kong)件(jian)(jian)(jian)(jian)都有自己的(de)(de)(de)屬性(xing)和事件(jian)(jian)(jian)(jian)。默認的(de)(de)(de)屬性(xing)值會在(zai)控(kong)(kong)(kong)件(jian)(jian)(jian)(jian)創建的(de)(de)(de)時(shi)(shi)候(hou)提(ti)供,但是程序員(yuan)也可以(yi)進行(xing)更(geng)改。很多的(de)(de)(de)屬性(xing)值可以(yi)在(zai)運行(xing)時(shi)(shi)候(hou)隨著用戶的(de)(de)(de)動作和修(xiu)改進行(xing)改動,這樣就(jiu)形成了一個動態的(de)(de)(de)程序。舉個例子(zi)來說:窗(chuang)體的(de)(de)(de)大小改變(bian)事件(jian)(jian)(jian)(jian)中加入了可以(yi)改變(bian)控(kong)(kong)(kong)件(jian)(jian)(jian)(jian)位(wei)置的(de)(de)(de)代碼(ma)(ma),在(zai)運行(xing)時(shi)(shi)候(hou)每當用戶更(geng)改窗(chuang)口大小,控(kong)(kong)(kong)件(jian)(jian)(jian)(jian)也會隨之改變(bian)位(wei)置。在(zai)文(wen)(wen)本(ben)框中的(de)(de)(de)文(wen)(wen)字(zi)改變(bian)事件(jian)(jian)(jian)(jian)中加入相(xiang)應(ying)的(de)(de)(de)代碼(ma)(ma),程序就(jiu)能夠在(zai)文(wen)(wen)字(zi)輸(shu)入的(de)(de)(de)時(shi)(shi)候(hou)自動翻(fan)譯(yi)或者阻止某些字(zi)符的(de)(de)(de)輸(shu)入。
VB 的程序可(ke)以(yi)包(bao)含一個(ge)或多個(ge)窗(chuang)體,或者是一個(ge)主窗(chuang)體和(he)多個(ge)子窗(chuang)體,類似(si)于操作(zuo)系統的樣(yang)子。有很少功(gong)能的對話框窗(chuang)口(比如(ru)沒有最大化(hua)和(he)最小化(hua)按鈕(niu)的窗(chuang)體)可(ke)以(yi)用(yong)來提供彈(dan)出功(gong)能。
VB 的組件既(ji)可以(yi)(yi)擁有用戶(hu)界面,也可以(yi)(yi)沒有。這樣一(yi)來服務器端程(cheng)序(xu)就可以(yi)(yi)處理增加的模塊。
VB 使用參數計算(suan)的(de)(de)方(fang)法(fa)來進行垃(la)圾收集,這(zhe)個方(fang)法(fa)中包(bao)含有大(da)量(liang)的(de)(de)對(dui)象,提供基(ji)本的(de)(de)面(mian)向對(dui)象支持。因為越來越多組件(jian)的(de)(de)出現,程序員可(ke)以選用自(zi)己需要的(de)(de)擴展庫。和有些語言(yan)不一樣,VB 對(dui)大(da)小(xiao)寫(xie)不敏感,但是(shi)(shi)能(neng)自(zi)動(dong)轉換(huan)關(guan)鍵詞到標準(zhun)的(de)(de)大(da)小(xiao)寫(xie)狀態,以及強制(zhi)使得(de)符(fu)號表入口的(de)(de)實體的(de)(de)變(bian)量(liang)名(ming)稱遵循書(shu)寫(xie)規(gui)則。默認情(qing)況下(xia)字符(fu)串的(de)(de)比較是(shi)(shi)對(dui)大(da)小(xiao)寫(xie)敏感的(de)(de),但是(shi)(shi)可(ke)以關(guan)閉(bi)這(zhe)個功能(neng)。
VB 使得大量(liang)的(de)外(wai)界控(kong)件(jian)(jian)有了自己的(de)生存空(kong)間。大量(liang)的(de)第三方控(kong)件(jian)(jian)針對VB提(ti)供。VB也提(ti)供了建立(li)、使用和重用這(zhe)些控(kong)件(jian)(jian)的(de)方法,但是由(you)于語言問題(ti),從一個應用程序創建另外(wai)一個并不簡(jian)單(dan)。
Visual Basic語言(yan)具(ju)有(you)不(bu)支(zhi)持繼承、無原生支(zhi)持多線程、異常處(chu)理不(bu)完善等三(san)項(xiang)明顯缺(que)點(dian),使(shi)其有(you)所局限性(此些(xie)缺(que)點(dian)皆已在vb.net獲(huo)得改(gai)進)。
不支持繼承
VB 5.0和(he)VB 6.0都是(shi)基(ji)于(yu)對象的(de)編程語言(yan),但(dan)是(shi)不(bu)包(bao)含(han)繼承特(te)性。VB中提(ti)供了特(te)殊的(de)類(lei)的(de)功(gong)能(neng),但(dan)是(shi)還是(shi)不(bu)能(neng)滿足程序(xu)員的(de)需求(qiu)。
無原生支持多線程
Visual Basic對于多線(xian)程無(wu)原生(sheng)支持,只能通過Windows API的(de)調用(yong)實現(xian),且極其的(de)不穩(wen)定(ding)。因為在(zai)API創建(jian)的(de)線(xian)程中,并沒有自動初始化運行時庫,導(dao)致部分的(de)函(han)數無(wu)法使用(yong)。一般的(de),在(zai)VB6等早(zao)期的(de)VB開發環境下,使用(yong)API創建(jian)線(xian)程的(de)目的(de)是完成容易使程序(xu)假(jia)死的(de)大量數據或者邏輯的(de)計算。
異常處理不完善
Visual Basic中(zhong)內置異常處(chu)理(li),即(ji)使未寫(xie)異常處(chu)理(li)代碼,一(yi)旦(dan)用(yong)戶出(chu)(chu)錯也會(hui)彈出(chu)(chu)一(yi)個明確寫(xie)出(chu)(chu)出(chu)(chu)錯原因對話框,接(jie)著程序終止。
Visual Basic中可以(yi)使(shi)用Err.Raise拋出異(yi)常(chang)(chang)(chang)。對系(xi)統及用戶拋出的(de)異(yi)常(chang)(chang)(chang)的(de)處(chu)理常(chang)(chang)(chang)用兩種(zhong)(zhong)模式:一是使(shi)用On Error Resume Next處(chu)理錯(cuo)誤;另一種(zhong)(zhong)是使(shi)用On Error Goto將運(yun)行引入錯(cuo)誤處(chu)理代碼(ma)。但相對C++等(deng)語言而(er)言,這樣的(de)異(yi)常(chang)(chang)(chang)處(chu)理破壞了代碼(ma)的(de)結構。
微軟開發了一系(xi)列由(you) Visual Basic 所(suo)派生的語言:
VBA
Visual Basic for Applications(VBA):包含在微軟的應用程序(xu)中(如Microsoft Office),以及類似(si)WordPerfect、Office這樣第(di)三方的產品里(li)面。VBA這樣嵌(qian)入在各種應用程序(xu)中看起(qi)來有些(xie)矛盾,但是它(ta)的功能(neng)和(he)VB一樣強大(da)。
VBS
VBScript(VBS):是(shi)默認的ASP語(yu)(yu)言(yan),還可以用在Windows腳本(ben)編寫和(he)網(wang)頁(ye)編碼中。盡(jin)管它的語(yu)(yu)法類(lei)似于VB,但(dan)是(shi)它卻(que)是(shi)一種(zhong)完全(quan)不同(tong)的語(yu)(yu)言(yan)。VBS不使用VB運行庫運行,而是(shi)由Windows腳本(ben)主機(ji)解釋執行。這(zhe)兩種(zhong)語(yu)(yu)言(yan)之中的不同(tong)點(dian)影(ying)響ASP網(wang)站的表現。
vb.net
Visual Basic.net(vb.net):當微軟準備開發一(yi)(yi)種(zhong)新(xin)的(de)(de)(de)編(bian)(bian)程工(gong)具的(de)(de)(de)時(shi)候,第一(yi)(yi)決定就是利用VB 6.0來(lai)進(jin)行(xing)舊改,或者就是重(zhong)新(xin)組建(jian)工(gong)程開發新(xin)工(gong)具。微軟后來(lai)開發了VB的(de)(de)(de)繼任者Visual Basic.net,同時(shi)也是.net平臺的(de)(de)(de)一(yi)(yi)部分。vb.net編(bian)(bian)程語言(yan)是一(yi)(yi)種(zhong)真正的(de)(de)(de)面向對(dui)象編(bian)(bian)程語言(yan),和VB并不完全兼容。
Visual Basic.net(vb.net) 是新一代的(de)VB語言,并不只是 VB 6.0 的(de)簡(jian)單升級(ji),vb.net 與 VB (泛指 VB 6.0 之前的(de)版本) 之間(jian)有(you)非常大的(de)區(qu)別。其新特性主(zhu)要表現在以下幾方面(mian):
1.vb.net完全集(ji)成(cheng)到Visual Studio集(ji)成(cheng)開發環境中,在這種集(ji)成(cheng)開發環境與VB在若干方面有差異。主要體現在窗體的布局以及菜單等方面都(dou)有所不同
2.vb.net項(xiang)目(mu)與VB不(bu)同。它使用基于文件(jian)夾的模型,所(suo)有項(xiang)目(mu)均放置在項(xiang)目(mu)文件(jian)夾層次結構(gou)中。
3.vb.net中使用ado.net來訪問(wen)數(shu)(shu)(shu)(shu)據(ju)(ju)庫,ado.net是(shi).netFramework的(de)一(yi)部分。在vb.net中實現數(shu)(shu)(shu)(shu)據(ju)(ju)訪問(wen)的(de)方法主要有兩種:其(qi)一(yi)是(shi)在程序設計階(jie)段,通過創建(jian)、配(pei)置數(shu)(shu)(shu)(shu)據(ju)(ju)適配(pei)器DataAdapter和生成(cheng)數(shu)(shu)(shu)(shu)據(ju)(ju)集DataSet;其(qi)二是(shi)在運(yun)行中,通過編程方式(shi)動態創建(jian)配(pei)置數(shu)(shu)(shu)(shu)據(ju)(ju)適配(pei)器和創建(jian)、生成(cheng)數(shu)(shu)(shu)(shu)據(ju)(ju)集。
4.在vb.net中是(shi)使(shi)用(yong)asp.net技術來編寫Web頁面(mian)的(de)。在asp.net中使(shi)用(yong)的(de)也(ye)不是(shi)腳本語(yu)言(yan),而是(shi)真正意義(yi)的(de)編程語(yu)言(yan)。憑借asp.net的(de)Web應(ying)(ying)用(yong)程序(xu)、XML Web Services等基(ji)于Web的(de)功能(neng),使(shi)得 vb.net 開發 Web 頁面(mian)與開發Windows 應(ying)(ying)用(yong)程序(xu)很(hen)相(xiang)似(si),Web頁面(mian)代碼也(ye)顯得有(you)條有(you)理了。
5.vb.net已經(jing)成(cheng)為(wei)完全的(de)面(mian)向對象的(de)編程語言,并且新增更(geng)多(duo)語言特(te)性。
Visual Basic.net有提供轉換精靈,協助開發(fa)者將(jiang)VB 6.0的程序代碼轉換為(wei)vb.net相(xiang)對應之程序代碼。
制作應用程(cheng)序安(an)裝盤等為(wei)用戶提(ti)供了友好的集(ji)成(cheng)開發環境,具體表現在:
可(ke)視化的(de)(de)設(she)計(ji)平臺:在(zai)(zai)(zai)使用傳統的(de)(de)程(cheng)序(xu)(xu)(xu)設(she)計(ji)語言(yan)編(bian)程(cheng)時,一(yi)般需要(yao)通(tong)過(guo)(guo)編(bian)寫(xie)程(cheng)序(xu)(xu)(xu)來設(she)計(ji)應(ying)用程(cheng)序(xu)(xu)(xu)的(de)(de)界(jie)(jie)面(如界(jie)(jie)面的(de)(de)外觀(guan)和(he)(he)位置(zhi)等),在(zai)(zai)(zai)設(she)計(ji)過(guo)(guo)程(cheng)中(zhong)看不見(jian)界(jie)(jie)面的(de)(de)實際效果。而(er)在(zai)(zai)(zai)Visual Basic 6.0中(zhong),采用面向對(dui)象(xiang)(xiang)(xiang)程(cheng)序(xu)(xu)(xu)設(she)計(ji)方法(Object-Oriented Programming),把程(cheng)序(xu)(xu)(xu)和(he)(he)數據封裝(zhuang)起來作為一(yi)個對(dui)象(xiang)(xiang)(xiang),每個對(dui)象(xiang)(xiang)(xiang)都是(shi)可(ke)視的(de)(de)。開發人員(yuan)在(zai)(zai)(zai)界(jie)(jie)面設(she)計(ji)時,可(ke)以直接用Visual Basic 6.0的(de)(de)工(gong)具箱在(zai)(zai)(zai)屏幕上"畫(hua)"出窗口、菜單、命令按鍵等不同(tong)類(lei)型的(de)(de)對(dui)象(xiang)(xiang)(xiang),并為每個對(dui)象(xiang)(xiang)(xiang)設(she)置(zhi)屬性。開發人員(yuan)要(yao)做的(de)(de)僅(jin)僅(jin)是(shi)對(dui)要(yao)完成(cheng)事件過(guo)(guo)程(cheng)的(de)(de)對(dui)象(xiang)(xiang)(xiang)進行(xing)編(bian)寫(xie)代碼,因而(er)程(cheng)序(xu)(xu)(xu)設(she)計(ji)的(de)(de)效率可(ke)大(da)大(da)提高。
事(shi)件(jian)驅(qu)動的(de)(de)編程(cheng)(cheng)(cheng)(cheng)機制:面(mian)向過程(cheng)(cheng)(cheng)(cheng)的(de)(de)程(cheng)(cheng)(cheng)(cheng)序(xu)是(shi)由(you)一個(ge)(ge)主(zhu)程(cheng)(cheng)(cheng)(cheng)序(xu)和(he)若干(gan)個(ge)(ge)子(zi)程(cheng)(cheng)(cheng)(cheng)序(xu)及函數組成的(de)(de)。程(cheng)(cheng)(cheng)(cheng)序(xu)運(yun)行(xing)(xing)時(shi)總是(shi)先從主(zhu)程(cheng)(cheng)(cheng)(cheng)序(xu)開始(shi),由(you)主(zhu)程(cheng)(cheng)(cheng)(cheng)序(xu)調(diao)用(yong)子(zi)程(cheng)(cheng)(cheng)(cheng)序(xu)和(he)函數,開發人員在編程(cheng)(cheng)(cheng)(cheng)時(shi)必須(xu)事(shi)先確定整個(ge)(ge)程(cheng)(cheng)(cheng)(cheng)序(xu)的(de)(de)執行(xing)(xing)順(shun)序(xu)。而Visual Basic 6.0事(shi)件(jian)驅(qu)動的(de)(de)編程(cheng)(cheng)(cheng)(cheng)是(shi)針對用(yong)戶(hu)觸(chu)發某個(ge)(ge)對象(xiang)的(de)(de)相關事(shi)件(jian)進行(xing)(xing)編碼(ma),每個(ge)(ge)事(shi)件(jian)都可以驅(qu)動一段(duan)程(cheng)(cheng)(cheng)(cheng)序(xu)的(de)(de)運(yun)行(xing)(xing)。開發人員只要編寫(xie)響應(ying)用(yong)戶(hu)動作的(de)(de)代(dai)碼(ma)。這樣的(de)(de)應(ying)用(yong)程(cheng)(cheng)(cheng)(cheng)序(xu)代(dai)碼(ma)精(jing)簡,比較(jiao)容易編寫(xie)與維護(hu)。
結構(gou)化(hua)(hua)的程序(xu)設計語言(yan):Visual Basic 6.0具有(you)豐(feng)富的數據類型和眾多的內部函(han)數。其采用模(mo)塊化(hua)(hua)和結構(gou)化(hua)(hua)程序(xu)設計語言(yan),結構(gou)清晰,語法簡單,容易學習。
強大的數(shu)據庫功能:Visual Basic 6.0利用數(shu)據控件(jian)可(ke)(ke)以訪問(wen)Access、FoxPro等(deng)多種(zhong)數(shu)據庫系統,也可(ke)(ke)以訪問(wen)Excel、Lotus等(deng)多種(zhong)電子(zi)表格。
ActiveX技術:ActiveX發(fa)(fa)展了(le)原有的(de)OLE技術,使(shi)開(kai)發(fa)(fa)人(ren)員擺(bai)脫(tuo)了(le)特定語(yu)言的(de)束縛,方(fang)便地使(shi)用其他應用程(cheng)序(xu)提供的(de)功能(neng)(neng),使(shi)Visual Basic 6.0能(neng)(neng)夠開(kai)發(fa)(fa)集聲音(yin)、圖像、動畫、字處理、電子表格、Web等對象于(yu)一體的(de)應用程(cheng)序(xu)。
網(wang)絡功能:Visual Basic 6.0提(ti)供的DHTML(動(dong)態(tai)HTML)設計工具可以使(shi)開發者動(dong)態(tai)地(di)創建和編輯Web頁面,使(shi)用戶能開發出多功能的網(wang)絡應用軟件(jian)。