标题：Visual Basic .NET
版本演变历史
Visual Basic .NET2002年Visual Basic .NET 2002 问世，此后Visual Basic 包含在 Visual Studio套装中。
该版本又被称为VB 7.0，是随vc#和ASP.NET一起在2002年发布的最初始的VB.net版本。C#被大力宣传为微软对付JAVA的王牌，受到媒体极力关注。然而VB.NET(有时被称为VB7)影响面不广，这导致VB社区之外很少人关注它。那些试用过此版VB.NET的人在层层幕布下发现一个强大却艰深的语言，而且还有不少弱点，比如它比VB6来有一个大了十倍的进行时(RunTime)，内存footprint也大大增加。Visual Basic .NET 2003该版本又被称为VB 7.1，是和.NET Framework 1.1一起发布的。新功能包括对.NET Compact Framework的支持和更好的VB升迁向导。并改进了运行状况，IDE稳定性(尤其是后台编译器)，以及运行时RunTime稳定性。另外，VB.NET 2003还有一个学院版Visual Studio .NET 2003 Academic Edition (VS03AE)，它是分发给各国某些学者免费使用的版本。Visual Basic 2005(VB.NET 8)该版本又被称为VB 8.0，是VB.Net的重大转变，微软决意在其软件名称中去掉了.NET部份。但是这个版本的 Visual Studio 仍然还是面向 .NET 框架的（版本2.0）。它同时也能开发跨平台的应用程序，如开发使用微软操作系统的手机的程序等。总体来说是一个非常庞大的软件，甚至包含代码测试功能。Visual Basic 2008(VB.NET 9)Visual Basic 2008即VB 9.0，2008年2月1日发布。通过几年的发展，它已成为一种专业化的开发语言和环境。用户可用 Visual Basic 快速创建 Windows 程序，现在还可以编写企业水平的客户/服务器程序及强大的数据库应用程序。Visual Studio 2010(VB.NET 10)Visual Studio 2010于2010年4月12日上市，其中包含 Visual Basic 版本 10（有时称为 VB 2010 或 VB10）。Visual Studio是微软公司推出的开发环境。是目前最流行的Windows平台应用程序开发环境。Visual Studio 2010集成开发环境（IDE）的界面被重新设计和组织，变得更加简单明了。Visual Studio 2010同时带来了 NET Framework 4.0、Microsoft Visual Studio 2010 CTP( Community Technology Preview--CTP)，并且支持开发面向Windows 7的应用程序。除了Microsoft SQL Server，它还支持 IBM DB2和Oracle数据库。[1]
和VB的关系
VB.net 是否该被看作VB的新版本或者是另一个完全不同的语言尚在争议中。虽然并非显而易见，但只要某个方法被弃用，它就会可会被自动转换，这说明了该语言的句法并没有出现很多突破性的变化，只是增加了对新功能的支持，比如结构化意外处理机制和短循环表达式(structured exception handling and short circuited expressions)。有一种变化会让旧用户迷惑：Integer和Long数据类型在长度上分别倍增。16位的 integer 在VB.NET中被认为是Short，而Integer和Long分别是32位和64位。同样，WindowsForms GUI编辑器和VB Form 编辑器在外观和功能上非常相似。
出现巨大变化的是语意,从运行于基于COM的deterministic, reference-counted的引擎之上的编程环境，转变为全面面向对象的基于.NET Framework的语言。.NET Framework包括了CLR(使用通用垃圾收集机制和JIT编译引擎的虚拟机)和大量的类库。VB开发者进入VB.NET要面对新增的大量类库的问题，虽然这在VS 2005的My 功能中已有所阐述。
上述变化表明了许多在运行及维护相关优化事宜下面的假定，一些VB6函数和库不再存在而其它的仍然可用，但是比不上.NET语言中自带的可替换的函数和库来得高效。即使它们可被编译，但大多从VB6转换而来的应用将需要一定程度上的重构(refactoring)，以全面利用新语言的优点。在有关句法、应用调试、部署和术语等方面的变化，有大量的文档可以参考。
1, 比较样例：
两个例子都弹出"Hello,World"并带OK按钮的信息框，它们显示了VB和VB.Net在句法上的相似。
VB.NET:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
MessageBox.Show("Hello, World")
End Sub
VB:
Private Sub Command1_Click()
MsgBox "Hello, World" 
End Sub
注意，VB.NET中的所有过程调用都必须加圆括号，而VB6中只有调用函数或者VB6中使用Call来调用过程时
才需要加圆括号，
另外，Command1和Button1并非必须，只是VB和VB.NET系统自动默认的控件名。
两个例子都卸载活动窗口，它们显示了VB和VB.Net在句法上的不同。
VB.NET:
Private Sub cmdClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdClose.Click
Me.Close()
End Sub
VB:
Private Sub cmdClose_Click()
Unload Me
End Sub
2, 争议：许多资深的VB程序员抱怨VB.NET，因为VB.NET 2002丢掉了许多不再发行的VB6中使用的大量语言constructs和用户界面功能，并且对保留下来的东西也改变了语意。例如，在VB.NET参数默认是以值方式传递的，而不是以引用方式。VB.NET 2002被半嘲讽半认真地称为Visual Fred或VBDOTNOT。作为对2005-03-08微软拒绝为VB6再提供维护与支持的回应，当月月底出现了反对者的请愿(petition)
VB.NET的支持者们认为新语言在很多方面比旧版本更为强大，比如它以相比早期版本更为自然、紧密和完全的方式地加入了现代面向对象的编程范式。反对者们有不同意见，虽然VB6对对象模型支持有缺点，但是二次开发升级到VB.NET 的成本比升级后的收益要高得多。而开发软件发布因特网版本的独立程序员也对VB.NET的RunTime尺寸过大不满。
相对编译成机器码的语言，编译成MSIL的语言包括VB.NET比较容易被反编译。
微软提供了VB到VB.NET的自动转换器，虽几经改进，但仍无法转换全部代码，几乎所有非小型程序都需要人工修改以完成编译。为了运行优化，大多程序需要大量工作去重构。
主要是进行演算的VB程序自然会更容易升迁，但是采用了以下功能，如数据库支持，图形， unmanaged operations，或者在安装启用明细方面都很麻烦。不幸的是，这些恰好是许多商业应用的核心。
另外，Win98及其以上的系统就自带了VB6的运行时(RunTime)库，而VB.NET需要安装大得多的.NET Framework。除了 Windows Vista, Windows XP Media Center Edition, Windows XP Tablet PC Editionand Windows Server 2003有自带.NET Framework，其它版本需要另外安装，这对用户和程序员都不方便。
针对开发者的不满，微软主要做了如下努力：使新的开发更容易启动，而把已开发的VB6代码升级到VB.NET。他们的最新成果可以从扩展阅读里看到, 那里文章和源码例子主要包括：完成VB6中的常见任务如打印预览；整合VB6和VB.NET解决方案(dubbed VB Fusion)，从VB6 代码转换到 VB.NET。
跨平台和开源的开发
目前和C#相比，针对VB.NET开发的开源工具发展得比较慢，虽然MONO开发平台提供了一个VB.NET特性库(VB.NET-specific libraries)并着手研发一个编译器和Windows Forms GUI 库.
VB革命
VB1.0于1991年发布。这个连接编程语言和用户界面的进步被称为Tripod（有些时候叫做Ruby），最初的设计是由阿兰·库珀（Alan Cooper）完成的
4.1 时间线
* 1991年4月，Visual Basic 1.0 Windows版本发布
* 1992年9月，Visual Basic 1.0 DOS版本发布。
* 1992年11月，VB2.0发布。它对于上一个版本的界面和速度都有所改善。
* 1993年夏天，VB3.0发布，分为标准版和专业版。其中包含一个数据引擎，可以直接读取Access数据库。
* 1995年8月，VB4.0发布了32位版本和16位的版本。其中包含了对类的支持。
* 1997年2月，VB5.0发布。程序员可以用32位的版本导入由4.0版本创建的16位程序，并且能顺利编译。同时还包含了对用户自建控件的支持。
* 1998年夏天，VB6.0发布。
* 2001年，Visual Basic.NET和.NET Framework发布。由于其使用了新的核心和特性，所以很多VB的程序员都要改写程序。
* 2003年，Visual Basic.NET 2003和.NET Framework 1.1发布。
* 2004年，微软发布了Visual Studio 2005的测试版本（代号Whidbey）。包含了.NET Framework2.0的测试版本。
* 2005年，微软宣布将不会再对非.NET版本的VB进行支持。VB社群立即作出反应表示关心这个消息，一些老用户还递交了希望能够继续对VB进行技术支持的请愿书。微软目前还不愿意改变他们的决定。
* 2005年11月7日，Visual Studio2005正式发布。
* 2010年4月12日，Visual Studio 2010版本上市。
加减乘除的程序
使用指定的值下执行指定运算例子1:程序中只利用一个按纽及清单进行指定的值下执行指定运算 例子中:增设以下的图形工具
图形工具 缺省名称 更改名称 属性 颢示文字 
---------------- ---------------------
按纽 buton1 btn1 text 计算器
颢示清单 lstbox1 lst1 text 
---------------------------------------
设定名称 设定属性
----------------
N1 double
N2 double
N3 double
answer double
设定宣告属性 指出不同的值代替数字N1,N2,N3 及answer
Private Sub btn1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn1.Click
Dim N1, N2, N3, answer As Double
N1= 4000
N2= 9
N3= 5
answer = (N1/ (N2- N3))
Lst1.Items.Add(answer)
end sub
解释:
第一列 - 为btn1按纽对系统VB的宣告(VB.NET程序中已提供的)
第二列 - 为对代数N1,N2,N3 及answer 进行的多重宣告(这例子指派代数为Double数字
一定要使用数字若有小数会同时颢示小数)
值得一提的是使用( , )来宣实是一种懒的做法，最正确的是
Dim N1 as double
Dim N2 as double
Dim N3 as double
Dim answer as double
一列一列地宣告一次
但是小程序可以这样做，当程序过大时会建议用懒的做法
第三列 - 当N1 是 4000
第四列 - 当N2 是 9
第五列 - 当N3 是 5
第六列 - 同时 answer = (N1/ (N2- N3))的数学运算
第七列 - 因此清单上会颢示运算答案
第八列 - 程序结束(这个按纽btn1)
以上一最简单的罗缉运算，也是VISUAL BASIC 发展的关键 最后以上的宣告方法也可以通用于VB版本中轮入指定的值下执行指定运算例子2:在表单上先轮入一个或以上的值数值再进行运算。 方法:1.与上例相同增加以上述图形工具 2.增设以下的图形工具
图形工具 缺省名称 更改名称 属性 颢示文字
----------------------------------------
文字盒 textbox1 txt1 text 0 
文字盒 textbox2 txt2 text 0 
文字盒 textbox3 txt3 text 0 
----------------------------------------
设定与上例的相同宣告属性
设定名称 设定属性
------------------
N1 double
N2 double
N3 double
answer double
-----------------
注意:只颢示由第三列至第七列的改变
注意:例子注解将使用( ' )取代，此符号旨可使用于Visual Basice的版本中作为注解，程序将不理会内函的内容。
N1= txt1.text '指示txt1的内容被n1所暂代
N2= txt2.text '指示txt2的内容被n2所暂代
N3= txt3.text '指示txt3的内容被n3所暂代
answer = (N1/ (N2- N3)) '相同的除数及淢数
Lst1.Items.Add(answer) '计算后将颢示在清单上
注意1:(txt1, txt2, txt3)后的.text是指把被颢示的内函的值文字或数字(但不包函符*号或特殊字)的设定。
注意2:(当使用者不想使用清单作颢示时，而想用文字盒作为替代，那么我们进行以下的改动
假设我们使用例1进行修改时
步骤1.增设以下图形工具 -
图形工具 缺省名称 更改名称 属性 颢示文字
----------------------------------------
文字盒 textbox4 txt4 text 0
步骤2删除 - 把设计版面中的清单中(lst1)中清除 步骤3删除 - 把程序码中第六行的Lst1.Items.Add(answer)清除. 步骤4更改程序码 - 在被清除的同一行中加入:txt1.text = answer
设定指定的文字及显示在清单上
Format String
For Loop
if Then Else
Data Base
控件
可用Visual Basic工具箱中的工具在窗体上绘制控件。
Visual Basic的控件有三种广义分类：内部控件：例如CommandButton和Frame控件。这些控件都在VisualBasic的.exe文件中。内部控件总是出现在工具箱中，不象ActiveX控件和可插入对象那样可以添加到工具箱中，或从工具箱中删除。ActiveX控件：是扩展名为.ocx 的独立文件，其中包括各种版本VisualBasic提供的控件（DataCombo, DataList 控件等等）和仅在专业版和企业版中提供的控件（例如Listview、Toolbar、Animation和TabbedDialog），另外还有许多第三方提供的ActiveX控件，如ComponentOne Studio for ActiveX。[2]
其他：例如一个包含公司所有雇员的列表的Microsoft Excel工作表对象，或者一个包含某工程计划信息的 Microsoft Project日历对象。因为这些对象能添加到工具箱中，所以可把它们当作控件使用。其中一些对象还支持自动化（正式的名称为OLE自动化），使用这种控件就可在Visual Basic应用程序中编程控制另一个应用程序的对象。