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