Visual Basic(简称VB)是Microsoft开发的一种面向对象的编程语言。使用Visual Basic即可快速、轻松地创建类型安全的.NET应用。
“Visual”指的是开发图形用户界面(GUI)的方法——不需编写大量代码去描述界面元素的外观和位置,而只要把预先建立的对象add到屏幕上的一点即可。“Basic”指的是BASIC(Beginners All-Purpose Symbolic Instruction Code)语言,是一种在计算技术发展历史上应用得最为广泛的语言。
Visual Basic源自于BASIC编程语言。VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建Active X控件,用于高效生成类型安全和面向对象的应用程序。程序员可以轻松的使用VB提供的组件快速建立一个应用程序。
VB 6.0 启动画面
1991年4月,微软公司推出了Visual Basic 1.0Windows版本,这个连接编程语言和用户界面的进步被称为Tripod(有些时候叫做Ruby),最初的设计是由阿兰·库珀(Alan Cooper)完成的。在当时,它是第一个“可视”的编程软件。
而后多年,Visual Basic经过多次发展,其发展历程展示在“Visual Basic发展简史”表中。
在2020年3月11日,微软宣布不会再开发VB或增加功能。
Visual Basic 发展简史
发布日期 名称 说明
.NET Framework 引入之前
Apr-91 Visual Basic 1.0 Windows 版本
Sep-92 Visual Basic 1.0 DOS 版本
Nov-92 Visual Basic 2.0 对于上一个版本的界面和速度都有所改善。
Jun-93 Visual Basic 3.0 包含一个数据引擎,可以直接读取Access数据库。
Aug-95 Visual Basic 4.0 发布了32位和16位的版本。其中包含了对类的支持。
Feb-97 Visual Basic 5.0 包含了对用户自建控件的支持,且从这个版本开始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) 主要改进了运行状况,提升了IDE以及运行时稳定性。
Nov-05 Visual Basic 2005 (8.0) 是 vb .net 的重大转变,微软决意在其名称中去掉了".NET"部份。VB2005提供My伪命名空间、泛型、操作符重载等新语言特性。
Nov-07 Visual Basic 2008 (9.0)提供支持IIF函数、匿名类、LINQ、Lambda表达式、XML数据结构等新语言特性。
Mar-08 微软宣布结束对于 VB 6.0的延长支持。
Apr-10 Visual Studio 2010 (10.0)提供支持Dynamic Language Runtime (DLR)、自动实现属性、集合初始化、不需要在代码断行书写时输入下划线“_”等新语言特性。
May-12 Visual Studio 2012 (11.0) RC 提供支持更简易的异步编程(Asynchronous Programming)、Iterator、扩充Global 关键词等新语言特性。
2013-11-13-2 Visual Studio 2013
2014/11/13 Visual Studio 2015 Windows、iOS以及Android应用开发
在VB中,注释有2种方式。
1.以Rem关键字开头,并且Rem关键字与注释内容之间要加一个空格。注释可以是单独的一行,也可以写在其他语句行的后面。如果在其他语句行后使用Rem关键字,则必须使用冒号(:)与语句隔开。
2.使用一个撇号(')来代替Rem关键字。若使用撇号,则在其他语句行使用时不必加冒号。
在Visual Basic中,可通过属性、方法和事件来说明和衡量一个对象的特征。
事件(Event)
事件是指发生在某一对象上的事情。事件又可分为鼠标事件和键盘事件。例如,在命令按钮(Command Button)这一对象上可能发生鼠标单击(Click)、鼠标移动(Mouse Move)、鼠标按下(Mouse Down)等鼠标事件,也可能发生键盘按下(Key Down)等键盘事件。总之,事件指明了对象“什么情况下做?”,常用于定义对象发生某种反映的时机和条件。
方法(Method)
方法是用来控制对象的功能及操作的内部程序。例如,人具有说话、行走、学习、睡觉等功能,在visual Basic中,对象所能提供的这些功能和操作,就称作“方法”。以窗体为例,它具有显示(show)或隐藏(hide)的方法。总之,方法指明了对象“能做什么?”,常用于定义对象的功能和操作。
属性(Property)
属性是指用于描述对象的名称、位置、颜色、字体等特征的一些指标。可以通过属性改变对象的特性。
有些属性可以在设计时通过属性窗口来设置,不用编写任何代码;而有些属性则必须通过编写代码,在运行程序的同时进行设置。可以在运行时读取和设置取值的属性成为读写属性,只能读取的属性成为只读属性。总之属性指明了对象“是什么样的?”,常用于定义对象的外观。
对象(Object)
Visual Basic.NET具有“面向对象”的特性,Visual Basic.NET应用种程序的基本单元是对象,用Visual Basic.NET编程就是用“对象”组装程序。这种“面向对象”的编程方法与传统的全部用代码编制程序的方法有很大区别,就像用集成电路芯片组装电视机和用三极管,二极管组装电视机的区别一样。显然,“面向对象”的编程方法比传统的编程方法更简单,更方便,并且编写出的程序也更加稳定。因此,“对象”可以被看做Visual Basic.NET程序设计的核心。
在Visual Basic.NET程序设计中,对象中还可以包含头,手,腿,脚等部位,其中的每个部位又可以单独作为作为被研究的对象。在Visual Basic.NET程序设计中,整个应用程序就是一个对象,应用程序中又包含着窗体(Form),命令按钮(Command),菜单(Menu)等对象。
类(Class)
在Visual Basic.NET中,对象是由类创建的,因此对象可以说是类的具体实例,这就好比是蛋糕和做蛋糕的模具之间的关系。
各种不同的对象分属于各种不同的种类。同一类对象可能具有一些不同的特征(或是说同一类对象不一定具有完全相同的特性);具有某些相同的特性的对象,不一定是同一类对象,这就好比是人和猴子虽然都有身高、性别等特征,但二者之间还存在着智商、语言等特性差异,这两个对象之间的特性相差很多,根本就不能算是同一类对象。而男人和女人,虽然有着性别、生理等方面的差异,但他们绝大部分特性相同,可以算是同一种类。由此,可以归结为一句话:同一类对象的绝大部分特性相同。
根据应用类型,Visual Basic控件可以分为如下3类:
内置控件即Visual Basic工具箱中的控件,里面包含了常见窗体程序所需要的控件
Visual Basic中,大部分的程序执行都是在事件中完成的。
在代码中,控件的每一个事件都需要声明,声明方法类似一个子过程的声明。大部分的控件在双击控件进入代码界面的时候都会自动补完该控件的最常用事件的声明。具体代码示范如下:
ActiveX控件包含不同版本Visual Basic提供的控件和仅在专业版、企业版中提供的控件,并且还包含第三方提供的控件。ActiveX控件是对Visual Basic内置控件的扩充,开发人员可以根据个人需要进行随意扩充,扩充的ActiveX控件将在工具箱中显示。
在Visual Basic的工具栏中,可以放置其他的第三方对象,可以像使用控件一样轻松使用。添加后的对象也在工具箱中显示。有关第三方对象,可以从受信任的来源下载控件,并通过添加引用来导入。支持这些自定义的Vb的控件有:ComponentOne Studio,Spread,ActiveReports、MultiRow等。
VB的中心思想就是要便于程序员使用,无论是新手或者专家。VB使用了可以简单建立应用程序的GUI系统,但是又可以开发相当复杂的程序。VB的程序是一种基于窗体的可视化组件安排的联合,并且增加代码来指定组件的属性和方法。因为默认的属性和方法已经有一部分定义在了组件内,所以程序员不用写多少代码就可以完成一个简单的程序。过去的版本里面 VB 程序的性能问题一直被放在了桌面上,但是随着计算机速度的飞速增加,关于性能的争论已经越来越少。
窗体控件的增加和改变可以用拖放技术实现。一个排列满控件的工具箱用来显示可用控件(比如文本框或者按钮)。每个控件都有自己的属性和事件。默认的属性值会在控件创建的时候提供,但是程序员也可以进行更改。很多的属性值可以在运行时候随着用户的动作和修改进行改动,这样就形成了一个动态的程序。举个例子来说:窗体的大小改变事件中加入了可以改变控件位置的代码,在运行时候每当用户更改窗口大小,控件也会随之改变位置。在文本框中的文字改变事件中加入相应的代码,程序就能够在文字输入的时候自动翻译或者阻止某些字符的输入。
VB 的程序可以包含一个或多个窗体,或者是一个主窗体和多个子窗体,类似于操作系统的样子。有很少功能的对话框窗口(比如没有最大化和最小化按钮的窗体)可以用来提供弹出功能。
VB 的组件既可以拥有用户界面,也可以没有。这样一来服务器端程序就可以处理增加的模块。
VB 使用参数计算的方法来进行垃圾收集,这个方法中包含有大量的对象,提供基本的面向对象支持。因为越来越多组件的出现,程序员可以选用自己需要的扩展库。和有些语言不一样,VB 对大小写不敏感,但是能自动转换关键词到标准的大小写状态,以及强制使得符号表入口的实体的变量名称遵循书写规则。默认情况下字符串的比较是对大小写敏感的,但是可以关闭这个功能。
VB 使得大量的外界控件有了自己的生存空间。大量的第三方控件针对VB提供。VB也提供了建立、使用和重用这些控件的方法,但是由于语言问题,从一个应用程序创建另外一个并不简单。
Visual Basic语言具有不支持继承、无原生支持多线程、异常处理不完善等三项明显缺点,使其有所局限性(此些缺点皆已在vb.net获得改进)。
不支持继承
VB 5.0和VB 6.0都是基于对象的编程语言,但是不包含继承特性。VB中提供了特殊的类的功能,但是还是不能满足程序员的需求。
无原生支持多线程
Visual Basic对于多线程无原生支持,只能通过Windows API的调用实现,且极其的不稳定。因为在API创建的线程中,并没有自动初始化运行时库,导致部分的函数无法使用。一般的,在VB6等早期的VB开发环境下,使用API创建线程的目的是完成容易使程序假死的大量数据或者逻辑的计算。
异常处理不完善
Visual Basic中内置异常处理,即使未写异常处理代码,一旦用户出错也会弹出一个明确写出出错原因对话框,接着程序终止。
Visual Basic中可以使用Err.Raise抛出异常。对系统及用户抛出的异常的处理常用两种模式:一是使用On Error Resume Next处理错误;另一种是使用On Error Goto将运行引入错误处理代码。但相对C++等语言而言,这样的异常处理破坏了代码的结构。
微软开发了一系列由 Visual Basic 所派生的语言:
VBA
Visual Basic for Applications(VBA):包含在微软的应用程序中(如Microsoft Office),以及类似WordPerfect、Office这样第三方的产品里面。VBA这样嵌入在各种应用程序中看起来有些矛盾,但是它的功能和VB一样强大。
VBS
VBScript(VBS):是默认的ASP语言,还可以用在Windows脚本编写和网页编码中。尽管它的语法类似于VB,但是它却是一种完全不同的语言。VBS不使用VB运行库运行,而是由Windows脚本主机解释执行。这两种语言之中的不同点影响ASP网站的表现。
vb.net
Visual Basic.net(vb.net):当微软准备开发一种新的编程工具的时候,第一决定就是利用VB 6.0来进行旧改,或者就是重新组建工程开发新工具。微软后来开发了VB的继任者Visual Basic.net,同时也是.net平台的一部分。vb.net编程语言是一种真正的面向对象编程语言,和VB并不完全兼容。
Visual Basic.net(vb.net) 是新一代的VB语言,并不只是 VB 6.0 的简单升级,vb.net 与 VB (泛指 VB 6.0 之前的版本) 之间有非常大的区别。其新特性主要表现在以下几方面:
1.vb.net完全集成到Visual Studio集成开发环境中,在这种集成开发环境与VB在若干方面有差异。主要体现在窗体的布局以及菜单等方面都有所不同
2.vb.net项目与VB不同。它使用基于文件夹的模型,所有项目均放置在项目文件夹层次结构中。
3.vb.net中使用ado.net来访问数据库,ado.net是.netFramework的一部分。在vb.net中实现数据访问的方法主要有两种:其一是在程序设计阶段,通过创建、配置数据适配器DataAdapter和生成数据集DataSet;其二是在运行中,通过编程方式动态创建配置数据适配器和创建、生成数据集。
4.在vb.net中是使用asp.net技术来编写Web页面的。在asp.net中使用的也不是脚本语言,而是真正意义的编程语言。凭借asp.net的Web应用程序、XML Web Services等基于Web的功能,使得 vb.net 开发 Web 页面与开发Windows 应用程序很相似,Web页面代码也显得有条有理了。
5.vb.net已经成为完全的面向对象的编程语言,并且新增更多语言特性。
Visual Basic.net有提供转换精灵,协助开发者将VB 6.0的程序代码转换为vb.net相对应之程序代码。
制作应用程序安装盘等为用户提供了友好的集成开发环境,具体表现在:
可视化的设计平台:在使用传统的程序设计语言编程时,一般需要通过编写程序来设计应用程序的界面(如界面的外观和位置等),在设计过程中看不见界面的实际效果。而在Visual Basic 6.0中,采用面向对象程序设计方法(Object-Oriented Programming),把程序和数据封装起来作为一个对象,每个对象都是可视的。开发人员在界面设计时,可以直接用Visual Basic 6.0的工具箱在屏幕上"画"出窗口、菜单、命令按键等不同类型的对象,并为每个对象设置属性。开发人员要做的仅仅是对要完成事件过程的对象进行编写代码,因而程序设计的效率可大大提高。
事件驱动的编程机制:面向过程的程序是由一个主程序和若干个子程序及函数组成的。程序运行时总是先从主程序开始,由主程序调用子程序和函数,开发人员在编程时必须事先确定整个程序的执行顺序。而Visual Basic 6.0事件驱动的编程是针对用户触发某个对象的相关事件进行编码,每个事件都可以驱动一段程序的运行。开发人员只要编写响应用户动作的代码。这样的应用程序代码精简,比较容易编写与维护。
结构化的程序设计语言:Visual Basic 6.0具有丰富的数据类型和众多的内部函数。其采用模块化和结构化程序设计语言,结构清晰,语法简单,容易学习。
强大的数据库功能:Visual Basic 6.0利用数据控件可以访问Access、FoxPro等多种数据库系统,也可以访问Excel、Lotus等多种电子表格。
ActiveX技术:ActiveX发展了原有的OLE技术,使开发人员摆脱了特定语言的束缚,方便地使用其他应用程序提供的功能,使Visual Basic 6.0能够开发集声音、图像、动画、字处理、电子表格、Web等对象于一体的应用程序。
网络功能:Visual Basic 6.0提供的DHTML(动态HTML)设计工具可以使开发者动态地创建和编辑Web页面,使用户能开发出多功能的网络应用软件。