Visual Basic(簡稱VB)是Microsoft開發(fā)的一種面向?qū)ο蟮木幊陶Z言。使用Visual Basic即可快速、輕松地創(chuàng)建類型安全的.NET應(yīng)用。
“Visual”指的是開發(fā)圖形用戶界面(GUI)的方法——不需編寫大量代碼去描述界面元素的外觀和位置,而只要把預(yù)先建立的對(duì)象add到屏幕上的一點(diǎn)即可?!癇asic”指的是BASIC(Beginners All-Purpose Symbolic Instruction Code)語言,是一種在計(jì)算技術(shù)發(fā)展歷史上應(yīng)用得最為廣泛的語言。
Visual Basic源自于BASIC編程語言。VB擁有圖形用戶界面(GUI)和快速應(yīng)用程序開發(fā)(RAD)系統(tǒng),可以輕易的使用DAO、RDO、ADO連接數(shù)據(jù)庫,或者輕松的創(chuàng)建Active X控件,用于高效生成類型安全和面向?qū)ο蟮膽?yīng)用程序。程序員可以輕松的使用VB提供的組件快速建立一個(gè)應(yīng)用程序。
VB 6.0 啟動(dòng)畫面
1991年4月,微軟公司推出了Visual Basic 1.0Windows版本,這個(gè)連接編程語言和用戶界面的進(jìn)步被稱為Tripod(有些時(shí)候叫做Ruby),最初的設(shè)計(jì)是由阿蘭·庫珀(Alan Cooper)完成的。在當(dāng)時(shí),它是第一個(gè)“可視”的編程軟件。
而后多年,Visual Basic經(jīng)過多次發(fā)展,其發(fā)展歷程展示在“Visual Basic發(fā)展簡史”表中。
在2020年3月11日,微軟宣布不會(huì)再開發(fā)VB或增加功能。
Visual Basic 發(fā)展簡史
發(fā)布日期 名稱 說明
.NET Framework 引入之前
Apr-91 Visual Basic 1.0 Windows 版本
Sep-92 Visual Basic 1.0 DOS 版本
Nov-92 Visual Basic 2.0 對(duì)于上一個(gè)版本的界面和速度都有所改善。
Jun-93 Visual Basic 3.0 包含一個(gè)數(shù)據(jù)引擎,可以直接讀取Access數(shù)據(jù)庫。
Aug-95 Visual Basic 4.0 發(fā)布了32位和16位的版本。其中包含了對(duì)類的支持。
Feb-97 Visual Basic 5.0 包含了對(duì)用戶自建控件的支持,且從這個(gè)版本開始VB可以支持中文。
Oct-98 Visual Basic 6.0
.NET Framework 引入之后
Feb-02 Visual Basic .NET 2002 (7.0) 由于其使用了新的核心和特性,所以很多VB的程序員都要改寫程序。
Apr-03 Visual Basic .NET 2003 (7.1) 主要改進(jìn)了運(yùn)行狀況,提升了IDE以及運(yùn)行時(shí)穩(wěn)定性。
Nov-05 Visual Basic 2005 (8.0) 是 vb .net 的重大轉(zhuǎn)變,微軟決意在其名稱中去掉了".NET"部份。VB2005提供My偽命名空間、泛型、操作符重載等新語言特性。
Nov-07 Visual Basic 2008 (9.0)提供支持IIF函數(shù)、匿名類、LINQ、Lambda表達(dá)式、XML數(shù)據(jù)結(jié)構(gòu)等新語言特性。
Mar-08 微軟宣布結(jié)束對(duì)于 VB 6.0的延長支持。
Apr-10 Visual Studio 2010 (10.0)提供支持Dynamic Language Runtime (DLR)、自動(dòng)實(shí)現(xiàn)屬性、集合初始化、不需要在代碼斷行書寫時(shí)輸入下劃線“_”等新語言特性。
May-12 Visual Studio 2012 (11.0) RC 提供支持更簡易的異步編程(Asynchronous Programming)、Iterator、擴(kuò)充Global 關(guān)鍵詞等新語言特性。
2013-11-13-2 Visual Studio 2013
2014/11/13 Visual Studio 2015 Windows、iOS以及Android應(yīng)用開發(fā)
在VB中,注釋有2種方式。
1.以Rem關(guān)鍵字開頭,并且Rem關(guān)鍵字與注釋內(nèi)容之間要加一個(gè)空格。注釋可以是單獨(dú)的一行,也可以寫在其他語句行的后面。如果在其他語句行后使用Rem關(guān)鍵字,則必須使用冒號(hào)(:)與語句隔開。
2.使用一個(gè)撇號(hào)(')來代替Rem關(guān)鍵字。若使用撇號(hào),則在其他語句行使用時(shí)不必加冒號(hào)。
在Visual Basic中,可通過屬性、方法和事件來說明和衡量一個(gè)對(duì)象的特征。
事件(Event)
事件是指發(fā)生在某一對(duì)象上的事情。事件又可分為鼠標(biāo)事件和鍵盤事件。例如,在命令按鈕(Command Button)這一對(duì)象上可能發(fā)生鼠標(biāo)單擊(Click)、鼠標(biāo)移動(dòng)(Mouse Move)、鼠標(biāo)按下(Mouse Down)等鼠標(biāo)事件,也可能發(fā)生鍵盤按下(Key Down)等鍵盤事件??傊录该髁藢?duì)象“什么情況下做?”,常用于定義對(duì)象發(fā)生某種反映的時(shí)機(jī)和條件。
方法(Method)
方法是用來控制對(duì)象的功能及操作的內(nèi)部程序。例如,人具有說話、行走、學(xué)習(xí)、睡覺等功能,在visual Basic中,對(duì)象所能提供的這些功能和操作,就稱作“方法”。以窗體為例,它具有顯示(show)或隱藏(hide)的方法??傊?,方法指明了對(duì)象“能做什么?”,常用于定義對(duì)象的功能和操作。
屬性(Property)
屬性是指用于描述對(duì)象的名稱、位置、顏色、字體等特征的一些指標(biāo)??梢酝ㄟ^屬性改變對(duì)象的特性。
有些屬性可以在設(shè)計(jì)時(shí)通過屬性窗口來設(shè)置,不用編寫任何代碼;而有些屬性則必須通過編寫代碼,在運(yùn)行程序的同時(shí)進(jìn)行設(shè)置。可以在運(yùn)行時(shí)讀取和設(shè)置取值的屬性成為讀寫屬性,只能讀取的屬性成為只讀屬性??傊畬傩灾该髁藢?duì)象“是什么樣的?”,常用于定義對(duì)象的外觀。
對(duì)象(Object)
Visual Basic.NET具有“面向?qū)ο蟆钡奶匦?,Visual Basic.NET應(yīng)用種程序的基本單元是對(duì)象,用Visual Basic.NET編程就是用“對(duì)象”組裝程序。這種“面向?qū)ο蟆钡木幊谭椒ㄅc傳統(tǒng)的全部用代碼編制程序的方法有很大區(qū)別,就像用集成電路芯片組裝電視機(jī)和用三極管,二極管組裝電視機(jī)的區(qū)別一樣。顯然,“面向?qū)ο蟆钡木幊谭椒ū葌鹘y(tǒng)的編程方法更簡單,更方便,并且編寫出的程序也更加穩(wěn)定。因此,“對(duì)象”可以被看做Visual Basic.NET程序設(shè)計(jì)的核心。
在Visual Basic.NET程序設(shè)計(jì)中,對(duì)象中還可以包含頭,手,腿,腳等部位,其中的每個(gè)部位又可以單獨(dú)作為作為被研究的對(duì)象。在Visual Basic.NET程序設(shè)計(jì)中,整個(gè)應(yīng)用程序就是一個(gè)對(duì)象,應(yīng)用程序中又包含著窗體(Form),命令按鈕(Command),菜單(Menu)等對(duì)象。
類(Class)
在Visual Basic.NET中,對(duì)象是由類創(chuàng)建的,因此對(duì)象可以說是類的具體實(shí)例,這就好比是蛋糕和做蛋糕的模具之間的關(guān)系。
各種不同的對(duì)象分屬于各種不同的種類。同一類對(duì)象可能具有一些不同的特征(或是說同一類對(duì)象不一定具有完全相同的特性);具有某些相同的特性的對(duì)象,不一定是同一類對(duì)象,這就好比是人和猴子雖然都有身高、性別等特征,但二者之間還存在著智商、語言等特性差異,這兩個(gè)對(duì)象之間的特性相差很多,根本就不能算是同一類對(duì)象。而男人和女人,雖然有著性別、生理等方面的差異,但他們絕大部分特性相同,可以算是同一種類。由此,可以歸結(jié)為一句話:同一類對(duì)象的絕大部分特性相同。
根據(jù)應(yīng)用類型,Visual Basic控件可以分為如下3類:
內(nèi)置控件即Visual Basic工具箱中的控件,里面包含了常見窗體程序所需要的控件
Visual Basic中,大部分的程序執(zhí)行都是在事件中完成的。
在代碼中,控件的每一個(gè)事件都需要聲明,聲明方法類似一個(gè)子過程的聲明。大部分的控件在雙擊控件進(jìn)入代碼界面的時(shí)候都會(huì)自動(dòng)補(bǔ)完該控件的最常用事件的聲明。具體代碼示范如下:
ActiveX控件包含不同版本Visual Basic提供的控件和僅在專業(yè)版、企業(yè)版中提供的控件,并且還包含第三方提供的控件。ActiveX控件是對(duì)Visual Basic內(nèi)置控件的擴(kuò)充,開發(fā)人員可以根據(jù)個(gè)人需要進(jìn)行隨意擴(kuò)充,擴(kuò)充的ActiveX控件將在工具箱中顯示。
在Visual Basic的工具欄中,可以放置其他的第三方對(duì)象,可以像使用控件一樣輕松使用。添加后的對(duì)象也在工具箱中顯示。有關(guān)第三方對(duì)象,可以從受信任的來源下載控件,并通過添加引用來導(dǎo)入。支持這些自定義的Vb的控件有:ComponentOne Studio,Spread,ActiveReports、MultiRow等。
VB的中心思想就是要便于程序員使用,無論是新手或者專家。VB使用了可以簡單建立應(yīng)用程序的GUI系統(tǒng),但是又可以開發(fā)相當(dāng)復(fù)雜的程序。VB的程序是一種基于窗體的可視化組件安排的聯(lián)合,并且增加代碼來指定組件的屬性和方法。因?yàn)槟J(rèn)的屬性和方法已經(jīng)有一部分定義在了組件內(nèi),所以程序員不用寫多少代碼就可以完成一個(gè)簡單的程序。過去的版本里面 VB 程序的性能問題一直被放在了桌面上,但是隨著計(jì)算機(jī)速度的飛速增加,關(guān)于性能的爭論已經(jīng)越來越少。
窗體控件的增加和改變可以用拖放技術(shù)實(shí)現(xiàn)。一個(gè)排列滿控件的工具箱用來顯示可用控件(比如文本框或者按鈕)。每個(gè)控件都有自己的屬性和事件。默認(rèn)的屬性值會(huì)在控件創(chuàng)建的時(shí)候提供,但是程序員也可以進(jìn)行更改。很多的屬性值可以在運(yùn)行時(shí)候隨著用戶的動(dòng)作和修改進(jìn)行改動(dòng),這樣就形成了一個(gè)動(dòng)態(tài)的程序。舉個(gè)例子來說:窗體的大小改變事件中加入了可以改變控件位置的代碼,在運(yùn)行時(shí)候每當(dāng)用戶更改窗口大小,控件也會(huì)隨之改變位置。在文本框中的文字改變事件中加入相應(yīng)的代碼,程序就能夠在文字輸入的時(shí)候自動(dòng)翻譯或者阻止某些字符的輸入。
VB 的程序可以包含一個(gè)或多個(gè)窗體,或者是一個(gè)主窗體和多個(gè)子窗體,類似于操作系統(tǒng)的樣子。有很少功能的對(duì)話框窗口(比如沒有最大化和最小化按鈕的窗體)可以用來提供彈出功能。
VB 的組件既可以擁有用戶界面,也可以沒有。這樣一來服務(wù)器端程序就可以處理增加的模塊。
VB 使用參數(shù)計(jì)算的方法來進(jìn)行垃圾收集,這個(gè)方法中包含有大量的對(duì)象,提供基本的面向?qū)ο笾С?。因?yàn)樵絹碓蕉嘟M件的出現(xiàn),程序員可以選用自己需要的擴(kuò)展庫。和有些語言不一樣,VB 對(duì)大小寫不敏感,但是能自動(dòng)轉(zhuǎn)換關(guān)鍵詞到標(biāo)準(zhǔn)的大小寫狀態(tài),以及強(qiáng)制使得符號(hào)表入口的實(shí)體的變量名稱遵循書寫規(guī)則。默認(rèn)情況下字符串的比較是對(duì)大小寫敏感的,但是可以關(guān)閉這個(gè)功能。
VB 使得大量的外界控件有了自己的生存空間。大量的第三方控件針對(duì)VB提供。VB也提供了建立、使用和重用這些控件的方法,但是由于語言問題,從一個(gè)應(yīng)用程序創(chuàng)建另外一個(gè)并不簡單。
Visual Basic語言具有不支持繼承、無原生支持多線程、異常處理不完善等三項(xiàng)明顯缺點(diǎn),使其有所局限性(此些缺點(diǎn)皆已在vb.net獲得改進(jìn))。
不支持繼承
VB 5.0和VB 6.0都是基于對(duì)象的編程語言,但是不包含繼承特性。VB中提供了特殊的類的功能,但是還是不能滿足程序員的需求。
無原生支持多線程
Visual Basic對(duì)于多線程無原生支持,只能通過Windows API的調(diào)用實(shí)現(xiàn),且極其的不穩(wěn)定。因?yàn)樵贏PI創(chuàng)建的線程中,并沒有自動(dòng)初始化運(yùn)行時(shí)庫,導(dǎo)致部分的函數(shù)無法使用。一般的,在VB6等早期的VB開發(fā)環(huán)境下,使用API創(chuàng)建線程的目的是完成容易使程序假死的大量數(shù)據(jù)或者邏輯的計(jì)算。
異常處理不完善
Visual Basic中內(nèi)置異常處理,即使未寫異常處理代碼,一旦用戶出錯(cuò)也會(huì)彈出一個(gè)明確寫出出錯(cuò)原因?qū)υ捒?,接著程序終止。
Visual Basic中可以使用Err.Raise拋出異常。對(duì)系統(tǒng)及用戶拋出的異常的處理常用兩種模式:一是使用On Error Resume Next處理錯(cuò)誤;另一種是使用On Error Goto將運(yùn)行引入錯(cuò)誤處理代碼。但相對(duì)C++等語言而言,這樣的異常處理破壞了代碼的結(jié)構(gòu)。
微軟開發(fā)了一系列由 Visual Basic 所派生的語言:
VBA
Visual Basic for Applications(VBA):包含在微軟的應(yīng)用程序中(如Microsoft Office),以及類似WordPerfect、Office這樣第三方的產(chǎn)品里面。VBA這樣嵌入在各種應(yīng)用程序中看起來有些矛盾,但是它的功能和VB一樣強(qiáng)大。
VBS
VBScript(VBS):是默認(rèn)的ASP語言,還可以用在Windows腳本編寫和網(wǎng)頁編碼中。盡管它的語法類似于VB,但是它卻是一種完全不同的語言。VBS不使用VB運(yùn)行庫運(yùn)行,而是由Windows腳本主機(jī)解釋執(zhí)行。這兩種語言之中的不同點(diǎn)影響ASP網(wǎng)站的表現(xiàn)。
vb.net
Visual Basic.net(vb.net):當(dāng)微軟準(zhǔn)備開發(fā)一種新的編程工具的時(shí)候,第一決定就是利用VB 6.0來進(jìn)行舊改,或者就是重新組建工程開發(fā)新工具。微軟后來開發(fā)了VB的繼任者Visual Basic.net,同時(shí)也是.net平臺(tái)的一部分。vb.net編程語言是一種真正的面向?qū)ο缶幊陶Z言,和VB并不完全兼容。
Visual Basic.net(vb.net) 是新一代的VB語言,并不只是 VB 6.0 的簡單升級(jí),vb.net 與 VB (泛指 VB 6.0 之前的版本) 之間有非常大的區(qū)別。其新特性主要表現(xiàn)在以下幾方面:
1.vb.net完全集成到Visual Studio集成開發(fā)環(huán)境中,在這種集成開發(fā)環(huán)境與VB在若干方面有差異。主要體現(xiàn)在窗體的布局以及菜單等方面都有所不同
2.vb.net項(xiàng)目與VB不同。它使用基于文件夾的模型,所有項(xiàng)目均放置在項(xiàng)目文件夾層次結(jié)構(gòu)中。
3.vb.net中使用ado.net來訪問數(shù)據(jù)庫,ado.net是.netFramework的一部分。在vb.net中實(shí)現(xiàn)數(shù)據(jù)訪問的方法主要有兩種:其一是在程序設(shè)計(jì)階段,通過創(chuàng)建、配置數(shù)據(jù)適配器DataAdapter和生成數(shù)據(jù)集DataSet;其二是在運(yùn)行中,通過編程方式動(dòng)態(tài)創(chuàng)建配置數(shù)據(jù)適配器和創(chuàng)建、生成數(shù)據(jù)集。
4.在vb.net中是使用asp.net技術(shù)來編寫Web頁面的。在asp.net中使用的也不是腳本語言,而是真正意義的編程語言。憑借asp.net的Web應(yīng)用程序、XML Web Services等基于Web的功能,使得 vb.net 開發(fā) Web 頁面與開發(fā)Windows 應(yīng)用程序很相似,Web頁面代碼也顯得有條有理了。
5.vb.net已經(jīng)成為完全的面向?qū)ο蟮木幊陶Z言,并且新增更多語言特性。
Visual Basic.net有提供轉(zhuǎn)換精靈,協(xié)助開發(fā)者將VB 6.0的程序代碼轉(zhuǎn)換為vb.net相對(duì)應(yīng)之程序代碼。
制作應(yīng)用程序安裝盤等為用戶提供了友好的集成開發(fā)環(huán)境,具體表現(xiàn)在:
可視化的設(shè)計(jì)平臺(tái):在使用傳統(tǒng)的程序設(shè)計(jì)語言編程時(shí),一般需要通過編寫程序來設(shè)計(jì)應(yīng)用程序的界面(如界面的外觀和位置等),在設(shè)計(jì)過程中看不見界面的實(shí)際效果。而在Visual Basic 6.0中,采用面向?qū)ο蟪绦蛟O(shè)計(jì)方法(Object-Oriented Programming),把程序和數(shù)據(jù)封裝起來作為一個(gè)對(duì)象,每個(gè)對(duì)象都是可視的。開發(fā)人員在界面設(shè)計(jì)時(shí),可以直接用Visual Basic 6.0的工具箱在屏幕上"畫"出窗口、菜單、命令按鍵等不同類型的對(duì)象,并為每個(gè)對(duì)象設(shè)置屬性。開發(fā)人員要做的僅僅是對(duì)要完成事件過程的對(duì)象進(jìn)行編寫代碼,因而程序設(shè)計(jì)的效率可大大提高。
事件驅(qū)動(dòng)的編程機(jī)制:面向過程的程序是由一個(gè)主程序和若干個(gè)子程序及函數(shù)組成的。程序運(yùn)行時(shí)總是先從主程序開始,由主程序調(diào)用子程序和函數(shù),開發(fā)人員在編程時(shí)必須事先確定整個(gè)程序的執(zhí)行順序。而Visual Basic 6.0事件驅(qū)動(dòng)的編程是針對(duì)用戶觸發(fā)某個(gè)對(duì)象的相關(guān)事件進(jìn)行編碼,每個(gè)事件都可以驅(qū)動(dòng)一段程序的運(yùn)行。開發(fā)人員只要編寫響應(yīng)用戶動(dòng)作的代碼。這樣的應(yīng)用程序代碼精簡,比較容易編寫與維護(hù)。
結(jié)構(gòu)化的程序設(shè)計(jì)語言:Visual Basic 6.0具有豐富的數(shù)據(jù)類型和眾多的內(nèi)部函數(shù)。其采用模塊化和結(jié)構(gòu)化程序設(shè)計(jì)語言,結(jié)構(gòu)清晰,語法簡單,容易學(xué)習(xí)。
強(qiáng)大的數(shù)據(jù)庫功能:Visual Basic 6.0利用數(shù)據(jù)控件可以訪問Access、FoxPro等多種數(shù)據(jù)庫系統(tǒng),也可以訪問Excel、Lotus等多種電子表格。
ActiveX技術(shù):ActiveX發(fā)展了原有的OLE技術(shù),使開發(fā)人員擺脫了特定語言的束縛,方便地使用其他應(yīng)用程序提供的功能,使Visual Basic 6.0能夠開發(fā)集聲音、圖像、動(dòng)畫、字處理、電子表格、Web等對(duì)象于一體的應(yīng)用程序。
網(wǎng)絡(luò)功能:Visual Basic 6.0提供的DHTML(動(dòng)態(tài)HTML)設(shè)計(jì)工具可以使開發(fā)者動(dòng)態(tài)地創(chuàng)建和編輯Web頁面,使用戶能開發(fā)出多功能的網(wǎng)絡(luò)應(yīng)用軟件。