Visual Basic.NET的新特征
作者:寒秋鸿影 来源:网易 添加时间:2006-5-21 11:15:02 一、统一的程序设计模式
以前的VB语言环境,如果要求程序完成任务的性质不同,则需要采用不同的设计模式,这样处理的优点是清晰而方便,但却加大了程序设计人员的学习量和学习难度。Visual Basic .NET对这一问题进行了改进,至于是如何改进的,朋友们还是先看实际的例子,自己进行对比吧!由于这个测试版现在只有英文的,所以只能以英文版为例。
先看一个传统的设计过程:
我们设计的程序目标是:计算一个人从出生算起到指定日期所经历的天数。
1.在传统的Form中设计:
打开Visual Basic .NET的IDE环境,建立windows 应用程序的工程文件,在Form1上添加控件,设置属性,控件名称和属性见下表:
| 控件 | 属性 |
| Label | Text = "Birthday" |
| TextBox | Text = "" Name = "txtBirthday" |
| Button | Text = "Calculate days" |
| Label | Name = "lblDaysAlive" Text = "" |
Dim datBirthDate As Date
datBirthDate = CDate(txtBirthday.Text)
Dim nDaysAlive As Integer
nDaysAlive = DateDiff(DateInterval.Day, datBirthDate, _
System.DateTime.Today)
lblDaysAlive.Text = CStr(nDaysAlive)
接着,运行程序,在TextBox中输入正确的日期,所以要求正确的日期,是因为程序中没有设计处理输入错误的代码。如果输入一个错误的数据,可能引起不可预料的后果。运行的的结果应当类似于下图:

插图1
你看了这个例子程序的执行结果,会很失望:没有看出来与以前的版本有什么大的不同!不过请你不要着急,继续往下看:
2. 用ASP .NET,建立基于 Web 的应用程序:
这就是上面所说的将VB熔于.NET战略之中的例子了,不信?那你往下看看。再建立一个新的工程,程序目标不变,还实现上述的功能,只是这次不使用传统的window窗体,改为基于WEB的窗体。尽管使用的是基于WBE窗体,建立与上例类似的控件后、仍可以使用原来的属性和代码―――你所需要作的,只是copy过来,放置到正确的位置就行了。执行的结果类似于下图:

比较我们“开发”的这两个功能相同的程序,会发现有些不同点:以建立按钮控件为例,在 Window Form中,放置好按钮后,其大小需要手工进行调节。但在WEB From中,按钮大小可以随按钮上文字的多少来自适应地调整尺寸。此外,传统的做法,控件都有一个系统给定的名字和标题文字,但在WEBFrom中,所有控件默认的“标题文字”是一个空串,这个例子程序的执行结果,外观上,最主要的区别是以WEB页面代替了传统的窗口。但不改动控件的属性和执行代码,就可以在另一类型的Form环境中运行,这在以往是不容易实现的。表面上看来,这些差别,都是很不起眼的小小改进。真正使会引起你惊奇的、更绝妙的还在后头,即下一个例子:
3.用VISUAL BASIC.NET开发适用于移动设备的应用程序:
像掌上电脑之类的移动设备,要开发其应用程序,往往需要专门的开发工具,并意味开发者需要学习很多新的东西。但用VISUAL BASIC.NET开发这样的程序,感觉起来和传统的VB程序开发没有什么不同。如果还以实现上面程序功能为目的――只是改在移动设备上实现,那么,请依照下面的步骤进行:
1.如果是第一次在VISUAL BASIC.NET上开发移动设备应用程序,必须先安装一个插件,该插件成为Internet 移动设备工具箱,要用这个插件请到:
http://msdn.microsoft.com/downloads/default.asp?URL=/code/sample.asp?url=/MSDN-FILES/027/001/516/msdncompositedoc.xml. 下载。
下载之后,可根据说明进行安装,安装完毕,在Visual Studio. NET.中可以得到新的选项,例如,在工程选择菜单中,就可以找到一项:Mobile Web Application。我们马上可以利用这一项来建立新的工程。
2.新出现的Form和WEB Form在外观上基本是一样的,我们也像上面的程序那样,在窗口中放置四个控件,控件所用的名字和属性都可保持不变。操作中会发现有些地方还是很不同的:如控件的位置并不像在WEB Form上那样可以任意放置,而是一层层线性地放置的,这可能与适应移动设备上显示面积有限而采取的措施有关。
3.移动设备窗口中,控件的属性和程序代码,仍然可以从上面例子程序中copy来,直接使用。 当上述工作完成后,就可以运行所设计的程序,显示的结果应当是下面的样子:

这个窗口是在PC机上运行时显示的样子,窗口中的各个控件的位置是自动分层放置的、设计者反倒不能随意变动位置的。
4.如果将该程序放置到移动设备上进行测试运行,你需要有一个基于windows CE的掌上电脑或可以用WEB激活的移动电话,那么,你可以利用无线网络建立掌上电脑与PC机之间的连通,启动移动设备的浏览器,就可以看到该程序运行的结果,如下图:

如果在移动电话上显示这个程序的运行结果,外观可能会有所不同,并且需要以WML作为支持。
以上三个例子,在逻辑上,实现的是同一个程序目标,尽管是在不同的工程中,而且在不同类型的Form中,却可以采用相同的控件、设置相同的属性,运行相同的代码。这就与VB6.0和VB5.0有很大区别了。
如果以上的变化主要表现为运行结果和外观的话,那么,下面涉及的就是设计过程中的改进了。
二、windows Form的改观
Form是可视化设计的基础界面,VISUAL BASIC.NET采用了新的引擎,那么,在新的引擎之下,Form都有什么新的变化呢?
首先是名称上的变化,严格说起来,在VISUAL BASIC.NET中,设计窗口被称为windows Form,而不是原来的Form。从效果上看,主要的变化有下面几项,这些变化,都是原来的版本所没有的:
1. 控件位置的调整:
在Form上放置控件后,其位置必须进行适当的调整,待合适之后可以锁定。VISUAL BASIC.NET的控件位置调整过程如下:
假设有一个应用程序,需要某个Form上放置两个控件:DataGrid和Button,大致情形应当如下面的插图:

如果调整DataGrid在Form中的位置,可以从属性(Properties)窗口中找到DataGrid控件,鼠标单击控件名称就可进入Anchor属性的设置,也就是锚定控件位置。弹出的窗口应当如下图:

该图中,方框里面首先显示的是DataGrid控件左边和上边到Form的距离,这是系统默认的。该距离的大小是用图中阴影显示的,鼠标点击加上阴影的矩形,就可以调整这两个方向上的距离。同理,如果鼠标点击右边和下边不带阴影的矩形,就可以调整DataGrid控件距下边和右边的距离。经过仔细调整,可以使得DataGrid控件的位置美观适中。
以同样的方法可以调整按钮Button的位置属性,具体的操作与上面大同小异,恕不赘述。
2. 设置窗口的透明度:
某些程序在运行的时候,需要能同时观察到位于背景上的信息。这就必须使用具有透明特性的窗口,以往,得到有透明感的窗口需要专门的设计,很不容易实现。现在好了,因为新的VISUAL BASIC.NET中,专门有设置窗口透明的属性。
对于透明程度属性的设置,共使用了两个属性参数:Opacity 和TransparencyKey,两者是从不同的途径对透明度进行控制的。下面是一个运行中的半透明窗口,设置的不透明属性值为75%,背景就是VISUAL BASIC.NET的IDE界面。怎么样?有点朦胧的感觉吧?

请注意,这个窗口的通体都是透明的。
窗口透明的属性,是以透过“光线”的百分比来设置的,百分比越高,透明度越大,反之,透明度越小。因此可推知,通过设置不同的百分比,就会得到从不透明到半透明直至完全透明的效果。
也可以通过另一个设置途径,将运行的窗口设置为完全透明的,那就是控制TransparencyKey参数来控制。通过一个弹出的颜色对话框,来设置TransparencyKey特殊的颜色,使背景能 “穿过”当前窗体显示出来。但看看下面的例子,会发现两者还有更细的区别。
仍然用前面的例子,只是将Opacity(不透明)属性设置为100,然后在一个称为系统颜色AppWorkspace的对话框中设置TransparencyKey属性,需要指出的是,我们在这里设置的不是整个Form的TransparencyKey属性,而仅仅是其中DataGrid控件的TransparencyKey属性。设置过程是:
从属性设置窗口找到DataGrid控件的TransparencyKey属性,点击后会显示出像下边左边的那个颜色对话框,请依照图中的样子选定,并点击sysytem标签。对话框变成右边的样子,选AppWorkSpace。

做完这些选择,就可以再次执行程序,运行结果将是下面的情形:

注意,这次运行中的Form1窗口,只有DataGrid控件占据的区域是透明的,别的地方不透明,这就是Opacity 和TransparencyKey两个属性对透明控制的区别。
除了控件位置调节和透明控制外。新版本的VISUAL BASIC.NET还加入了设计非矩形窗口的功能,这都是现在很流行的软件设计风格。
本文只是从外观方面与以前的VB版本进行了比较,更深层次的东西并没有触及。就按仅列举的功能说,已经比之以前的版本有了诸多改进。将来探险正式的发行版本,可预期将有更大的惊喜与收获!
站内搜索