东华大学VB和VB杜明老师课件Word下载.docx
《东华大学VB和VB杜明老师课件Word下载.docx》由会员分享,可在线阅读,更多相关《东华大学VB和VB杜明老师课件Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
1.2输出
和VB6.0和VB.NET在输出信息方式做了很大改变。
在VB6.0中,用户输出信息主要采用如下方法:
使用Print语句。
如,Print"
Hello"
"
"
"
VBWorld!
。
换行使用无参数Print语句。
使用GUI控件(文本框、列表、组合框等等)。
内置函数。
如,MsgBox()。
在VB.NET中,Print语句不再被支持,取而代之的是使用控制台System.Console对象,在DOS命令行窗口输出信息。
VB.NET用户输出信息主要采用如下方法:
使用System.Console对象。
System.Console.WriteLine("
Hello,VB.NETWorld!
"
)。
使用GUI控件(文本框、列表、组合框等等)输出。
内置对象和函数。
如,MsgBox(),MessageBox.Show()。
换行采用在输出的字符串中插入换行符VBCRLF。
例如:
MessageBox.Show("
&
VBCRLF&
VB.NETWorld!
)
2.基本语言元素
2.1命名空间
命名空间(Namespace)是类和组件的逻辑组合,其目的在于将.NETclass按类别定义。
微软借用了C++classpackaging概念:
Namespace来描述这种组合。
大部分的.NET类型都在命名空间中定义。
察看.NETFrameworkClassLibrary,可以看到数以百计的命名空间。
例如,SystemNamespace就包括了Console、Object等类型定义。
如果想使用Console类,需要用Imports指令导入SystemNamespace。
如下所示:
ImportsSystem
用户也可以明确指定调用namespace而无需用Import导入。
例如,在VB6.0,用户可以直接使用内置函数,如abs(),在VB.NET必须导入或直接指定命名空间,如System.Math.abs()。
2.2语法
数据类型(DataType)的改变
VB.NET对VB6.0中的部分数据类型进行了修改,下面是数据类型变化对照表。
表1数据类型的变化
编号
数据类型
VB6.0
VB.NET
1
Integer
16bitsize
32bitsize,System.Int32
2
Long
32bitsize
64bitsize,System.Int64
3
Currency
用于存储大浮点数
被decimal替代,支持更高精度
4
Variant
可以存储任意类型数据
被Object类型替代,也可以存储任意类型数据
5
Date
Date类型被存储为double
引入DateTime类型,用于存储不同格式的日期
6
Short
16bit
System.Int16
变量声明的变化
在VB6.0中,变量声明有许多限制。
其中之一就是不能同行声明多个变量。
如果一定要在一行中声明多个变量,就一定得指明每个变量的类型,否则将被默认为Variant类型。
Dima1,a2AsInteger
其中,a1是Variant类型,a2是Integer类型。
VB.NET支持同行声明多个变量,下面定义的变量都为Integer类型:
Dima1,a2,a3AsInteger
变量初始化是另一个问题。
在VB6.0中不能同时声明和初始化变量,而VB.NET则支持这个特性。
DimnameAsString="
Mahesh"
System.Console.Write(name)
声明常量也可以照此办理:
ConstDT_COUNTAsInteger=23
在VB.NET中,New关键字用于创建对象。
由于数据类型是对象,所以New关键字用以创建一个数据类型对象。
DimiAsInteger=NewInteger()
i=10
System.Console.WriteLine(i.ToString())
像C++一样,VB.NET支持代码块级别的作用域检查。
在语句块中声明的变量只在块内有效。
Fori=1To10
DimpAsLong
System.Console.WriteLine(i.ToString())
Nexti
System.Console.WriteLine(p.ToString())
这段代码在VB.NET中会得到一个编译错误,因为p在For..Next语句块之外不可访问。
在VB6.0中这段代码可以通过。
数组
VB.NET对数组作了明显的改动。
在VB.NET中,你需要格外留意数组范围问题。
VB6.0默认数组下界为0,故数组中的元素数量等与数组上界值加一。
下面的数组界限从A(0)到A(10),共有11个元素:
DimA(10)AsSingle
可以使用OptionBase改变下界值为1。
在VB.NET中,数组和C++一样,下界值为0,不支持OptionBase。
注意:
MSDN文档指出数组只能包括与其尺寸相等的元素数量,例如:
DimA(10)AsInteger
只能包括10个元素(从A(0)到A(9)),但在编译下面这段代码时我发现它运行良好,看起来数组中容纳了11个元素。
A(0)=12
A
(2)=24
A(10)=23
你可以在VB6.0中指定固定长度的数组。
DimArrWeekDays(0To6)AsInteger
这里的ArrWeekDays数组是固定长度的,不能用ReDim语句改变长度。
VB.NET不支持固定长度数组,所以ReDim总是有效。
可以用下面两种方式声明数组:
DimArrWeekDays(6)AsInteger
DimArrWeekDays()AsInteger={1,2,3,4,5,6}
在VB6.0中,ReDim用于初始化动态数组。
在VB.NET中你不能把它当作声明用。
ReDim只能用于改变数组长度,不过不能改变数组维数。
Variant对阵Object
VB6.0中的Variant数据类型能存储任意类型变量,VB.NET中Object具备相同能力。
固定长度字符串
在VB6.0中,可以在声明字符串时指定其长度。
VB.NET不支持固定长度字符串。
布尔操作符
VB6.0中的And、Or或是Xor语句是按位操作符。
而在VB.NET中,它们是布尔操作符。
执行这些操作将返回true或false。
VB.NET引入新操作符来完成按位操作。
操作符描述
BitAnd按位And
BitOr按位Or
BitXor按位Xor
BitNot按位Not
结构与自定义类型
在VB6.0中,你使用Type…EndType语句块创建结构或自定义类型。
TypeStdRec
StdIdAsInteger
StdNameAsString
EndType
VB.NET引入新的语法:
Structure。
Type…EndType不再被支持。
Structure…EndStructure与C++用法相同。
可以指定结构中每个元素的可访问域,如Public、Protected、Friend、ProtectedFriend、Private等。
StructureStdRec
PublicStdIdAsInteger
PublicStdNameAsString
PrivateStdInternalAsString
EndStructure
VB.NET中的Structures就像类一样,也可以拥有方法和属性。
New和Nothing关键字
VB6.0中,ASNew和Nothing关键字用于声明一个对象并初始化它。
VB.NET不支持隐式创建对象。
如前所言,甚至连数据类型都是对象。
你可以采用以下两种方法创建数据类型或对象:
DimiAsInteger
DimiAsInteger=NewInteger()
2.3语句
VB.NET对VB6.0的流程控制语句做了大的改变,下面是控制语句的修改情况:
GoSub不再受到支持。
Call、Function和Sub语句均可用于调用过程。
On...GoSub和On...GoTo语句不再受支持。
可以使用SelectCase语句来替代。
While...Wend语句现在改为While…EndWhile语句。
不再支持Wend关键字。
Set语句取消。
2.3类
除了VB6.0原有的Private和Public,VB.NET引入了几个新关键字。
全部访问域关键字及其作用域列表如下:
Private
限于class内部
Public
可以从class外访问
·
Friend
限于class所属的应用程序内
Protected
只能被class和其派生类访问
ProtectedFriend
能被class、应用程序和派生类访问
继承是面向对象编程语言中最常用的技术。
继承让你能够重用类代码和功能。
VB.NET支持继承,而VB6.0则不支持。
2.4结构化异常处理
异常处理也被称之为错误处理。
在VB6.0中,一般使用OnErrorGoto和OnErrorResumeNext来进行错误处理。
这种类型的错误处理被称为非结构化异常处理(UnstructuredExceptionHandling)。
而在VB.NET中,Microsoft推出了结构化异常处理机制。
VB.NET支持类似C++的TryCatch..Finally控制。
Try语句块用以抛出异常。
如果异常发生,在Catch语句块中处理。
Finally语句块是可选的,在需要释放资源时特别有用。
3.函数、过程
Basic6.0参数未指定其默认值为ByVal或ByRef时,其默认值为ByRef。
VB.NET参数未指定其默认值为ByVal或ByRef时,其默认值为ByVal。
将参数默认值指定为ByVal而不指定为ByRef,可以避免过程错误地修改由调用方传递的变量。
这也使得默认的调用规则与赋值一致,以便参数有效地绑定至表达式(通过表达式赋值为正式参数)。
请用户注意避免由VisualBasic6.0升级到VisualBasic.NET带来的混乱。
如果用户输入的参数声明未显式指定其默认值为ByVal或ByRef,IDE将为其自动添加ByVal关键字。
VB6.0允许不用加圆括号调用过程(sub)。
不过,用Call语句调用函数或sub时,一定要使用圆括号。
DimIasInteger
CallEvaluateData(2,i)
EvaluateData2,i
在VB.NET中,所有的方法调用都需要圆括号,而Call语句则是可选的。
4.控件
VB.NET对VB6.0控件属性作了大的修改,下面对其中的一些主要的控件属性进行分类说明。
4.1基本控件
标签
Text:
此属性在VB6.0中称为Caption。
文本框
AcceptsReturn:
如果设置为True,则多行文本框会将CRLF当作有效字符。
要禁止在文本框中输入CRLF,请将此属性设置为False。
AcceptsTab:
如果设置为True,则多行文本框会将制表符当作有效字符。
要禁止在文本框中输入制表符,请将此属性设置为False。
CharacterCasing:
控制用户在此控件中键入的字母的大小写。
选项包括Normal、UpperCase和LowerCase。
ReadOnly:
如果要禁止用户在此文本框中输入文本,请将此属性设置为True。
此属性与原来的Locked属性功能相同。
TextAlign:
当用户在文本区域键入数据时,此属性控制文本的对齐方式。
可将此属性设置为Left、Right或Center。
按钮控件
BackgroundImage:
允许在按钮上设置背景图像,还可以在图像上添加文本。
DialogResult:
当将窗体作为对话框调用时,设置返回结果。
如果用户按下此按钮,将返回此属性中的值。
FlatStyle:
改变按钮的外观。
选项包括Flat、PopUp、Standard和System。
如果使用WindowsXP,则应该选择System,因为此选项允许您使用XP主题。
Image:
在此按钮中显示的图像。
ImageAlign:
按钮中图像的放置位置。
ImageIndexImageList:
控件(在ImageList属性中设置)中图像的索引号。
ImageListImageList:
控件的名称,在此控件中使用ImageIndex属性检索图像。
Text此属性在VB6.0中称为Caption。
TextAlign:
控制按钮上显示的文本的对齐方式。
选项包括left、right、center、middle、top或bottom,或任何上述选项的组合。
复选框控件
AutoCheck:
如果设置为True,则单击控件的任意位置,其状态都会从选中变为取消选中。
允许在复选框控件上设置背景图像,还可以在图像上添加文本。
CheckAlign:
确定复选框控件的位置。
VisualBasic6.0将文本的位置限制在复选框内的左侧或右侧。
现在,您可以选择left、right、up、down或center。
Checked:
True=选中,False=取消选中。
CheckState:
此属性允许用户在设计时设置三种状态,以指明在运行时希望该控件显示的内容。
可以选择Checked、Unchecked或Indeterminate。
只有在将ThreeState属性设置为True时,才能设置Indeterminate选项。
改变复选框控件的外观。
在复选框中显示的图像。
复选框中图像的放置位置。
Text此属性在VisualBasic6.0中称为Caption。
ThreeState:
:
如果此属性设置为True,则可以将CheckState属性设置为Indeterminate,同时它还允许用户在Checked、Unchecked和Indeterminate三种状态间切换。
单选按钮控件
如果设置为True,则单击该控件的任意位置,其状态将从选中变为取消选中。
允许在单选按钮上设置背景图像,还可以在图像上添加文本。
确定单选按钮中选中标记的位置。
在VisualBasic6.0中,只能将其放在文本的左侧或右侧。
而在.NET中,您可以选择left、right、up、down或center。
Checked此属性在VisualBasic6.0中称为Value。
FlatStyle改变单选按钮控件的外观。
Image在单选按钮中显示的图像。
ImageAlign单选按钮中图像的放置位置。
ImageIndexImageList控件(在ImageList属性中设置)中图像的索引号。
ImageListImageList控件的名称,在此控件中使用ImageIndex属性检索图像。
Text此属性在VB6.0中称为Caption。
控制单选按钮上显示的文本的对齐方式。
可将此属性设置为left、right、center、middle、top或bottom,或上述任何选项的组合。
组合框控件
DisplayMember:
在控件的列表部分显示从每一对象加载到ComboBox中的项。
DisplayMember的默认值是ToString方法。
DropDownStyle:
此属性在VB6.0中称为Style。
与在VB6.0中一样,您可以选择Simple、DropDownList和DropDown。
DropDownWidth:
组合框下拉部分的宽度(以像素计算)。
可以不同于窗体上组合框的实际尺寸。
MaxDropDownItems:
用户使用组合框的下拉部分时允许显示的项数。
MaxLength:
将DropDownStyle属性设置为Simple时,可以输入的最大字符数。
ValueMember:
从选定项中检索数据。
默认值为ToString方法。
列表框控件
ColumnWidth将MultiColumn属性设置为True时各列的宽度。
DisplayMember在控件的列表部分显示从每一对象加载到ListBox中的项。
HorizontalExtent如果将HorizontalScrollbar属性设置为True,则可以在此属性中输入一个数字,表示滚动条可以滚动的最大宽度(以像素计算)。
HorizontalScrollbar如果不想在数据的宽度大于此方框时显示水平滚动条,请将该属性设置为False。
ItemHeight使用固定字体时列表框中各项的高度。
Items代替VB6.0ListBox控件的List属性。
MultiColumn代替VB6.0中的Columns属性。
如果希望显示多行,请将此值设置为True。
ScrollAlwaysVisible如果希望在数据量很少时仍显示滚动条,请将此属性设置为True。
这有助于用户根据此列表框中可能输入的数据确定列表框的适当宽度。
如果在运行时加载数据后,可以看到滚动条,最好能够在数据太大时正确设置控件的宽度。
SelectionMode代替VB6.0中的MultiSelect属性。
UseTabStop如果不希望Tab字符在列表框中代表不同的列,请将此属性设置为False。
ValueMember从选定项中检索数据。
图片框控件
BackgroundImage允许在图片框上设置背景图像,还可以在图像上添加文本。
BorderStyle包括None、Fixed和Fixed3D选项。
Image用于代替Picture属性。
SizeMode控制图片的显示方式。
可以选择的值包括Normal、StretchImage、AutoSize和CenterImage。
HScrollBar控件
Maximum代替VB6.0中的Max属性。
Minimum代替VB6.0中的Min属性。
VScrollBar控件
其他控件
除了VB6.0中的标准控件外,VB.NET中还升级了许多其他控件。
实际上,升级的控件非常多。
了解本文列出的变化后,对以后在.NET中使用这些新控件时遇到的变化类型就会有一个清楚的认识。
使用Anchor属性,您不必编写任何代码行就能将控件锚定在窗体的任何边。
通过选择图形化菜单中的选项,您可以选择所需的操作。
在代码中,可以使用诸如TopLeft、BottomRight、Left、Right、Top、Bottom、TopLeftBottom和All等常量来设置属性值。
Dock属性类似于Anchor属性,使您可以将控件靠接到容器的任何边。
靠接控件时,控件将随窗体的缩放而缩放,但其靠接的边保持不变,如果将控件靠接在窗体的所有边,则控件将充满整个窗体。
4.2控件相关问题
关于控件数组
在VB6.0中,将所有控件的Name属性设置为相同的值便可以创建控件数组。
随后,每个控件的Index属性会被设置为不同的编号。
Index值被传递给该组控件的任意事件,这样您就可以知道哪个控件调用了该事件。
这是VB6.0中控件数组的用途之一,即一个事件过程处理多个控件的代码。
而在VB.NET中,处理控件数组的方式则大不一样。
实现一个过程处理多个控件的事件的方法有两种:
使用内嵌于.NET类中的AddHandler过程,或在过程中使用Handles子句。
如果您只希望编写一个Click事件,使窗