VisualBasic.NET程序设计(上)ppt.ppt

上传人:人*** 文档编号:576403495 上传时间:2024-08-19 格式:PPT 页数:211 大小:1.46MB
返回 下载 相关 举报
VisualBasic.NET程序设计(上)ppt.ppt_第1页
第1页 / 共211页
VisualBasic.NET程序设计(上)ppt.ppt_第2页
第2页 / 共211页
VisualBasic.NET程序设计(上)ppt.ppt_第3页
第3页 / 共211页
VisualBasic.NET程序设计(上)ppt.ppt_第4页
第4页 / 共211页
VisualBasic.NET程序设计(上)ppt.ppt_第5页
第5页 / 共211页
点击查看更多>>
资源描述

《VisualBasic.NET程序设计(上)ppt.ppt》由会员分享,可在线阅读,更多相关《VisualBasic.NET程序设计(上)ppt.ppt(211页珍藏版)》请在金锄头文库上搜索。

1、Visual Basic. NET 程序设计(上)Visual Basic. NET 程序设计第1章 Visual Basic.NET程序开发环境 内容提要内容提要n概述n启动和退出Visual Basic. NETn标题栏、菜单栏和工具栏nwindows窗体设计器、解决方案管理器窗口 、资源管理器与属性窗口n窗口管理2000年,Microsoft公司推出了一个全新的概 念,即.NET。为了实现.NET技术,Microsoft公司开发了一整套工具组件,这些组件被集成到Visual Studio.NET中,而Visual Basic.NET就是它的一个组成部分。也就是说,Visual Basic

2、.NET与Visual C#.NET、Visual C+等开发工具使用的是同一个开发环境,这个开发环境就是Visual Studio.NET。在这一章中,我们将介绍Visual Studio.NET环境中与Visual Basic.NET有关的部分。 1.1概述Visual Basic.NET是在Visual Basic 6.0的基础上产生的,应当说,它仍然是Visual Basic语言,与Visual Basic有着相同的基本语法、关键字和编程方式。但是,Visual Basic.NET具有大量的新特性,增加了一些新的关键字、语法和数据类型,同时废弃了一些关键字。这些变化不但大大增强了Vis

3、ual Basic的性能,而且使用起来更方便。确切地说,应当把Visual Basic.NET看作是与Visual Basic 6.0语法相似的一门新语言,而不是简单的“升级”。 1.1.1 Visual Basic.NET的新特点 q统一的集成开发环境(Integrated Development Environment,即IDE) q真正的面向对象,引入了很多新的和改进的性能,包括继承、接口和重载等 q丰富的数据类型 q改进了的窗体引擎 q结构化的错误处理 q方便的Web开发 q新一代的数据访问q多线程的直接支持1.1.2 从VB 6.0到VB.NET 升级到VB.NET后,用以前版本的V

4、isual Basic编写的程序不能直接在Visual Basic. NET中打开,当然也不可能运行。 q功能的变化,为了提供全部.NET功能,Visual Basic. NET需要重新构建关键字和语法 q关键字的变化,废弃了原有的一些关键字,有些关键字的功能仍然保留,但用新的关键字或命名空间(NameSpace)取代1.2 启动和退出Visual Basic.NET n第一种方法:使用“开始”菜单中的“程序”命令n第二种方法:使用“资源管理器” n第三种方法:使用“开始”菜单中的“运行”命令 n第四种方法:建立启动Visual Studio.NET的快捷方式 “打开项目”对话框 和“新建项目

5、”对话框“解决方案”(Solution)Visual Basic.NET集成开发环境 退出Visual Basic.NET 为了退出Visual Basic.NET,可以执行“文件”菜单中的“退出”命令,或按Alt+Q键。如果当前程序已修改过而且没有存盘,系统将显示一个对话框,询问用户是否将其存盘,此时如果单击“是”按钮则存盘;如果单击“否”按钮则不存盘。在上述两种情况下都将退出Visual Basic.NET,回到Windows环境。 1.3 标题栏、菜单栏 和工具栏n标题栏是屏幕顶部的水平条,它显示的是应用程序的名字。用户与标题栏之间的交互关系由Windows来处理,而不是由应用程序处理。

6、 n在标题栏的下面是集成环境的主菜单。菜单栏中的菜单命令提供了开发、调试和保存应用程序所需要的工具。 工具栏 nVisual Basic.NET提供了多种工具栏,并可根据需要定义用户自己的工具栏。在一般情况下,集成环境中只显示标准工具栏和文本编辑器工具栏,其他工具栏可以通过“视图”菜单中的“工具栏”命令打开(或关闭)。 1.4 窗体设计器、解决方案管理器窗口 、资源管理器与属性窗口nWindows窗体设计器窗口 :简称窗体(Form),是应用程序最终面向用户的窗口,它对应于应用程序的运行结果。各种图形、图像、数据等都是通过窗体或窗体中的控件显示出来的。n在设计应用程序时,窗体就像是一块画布,在

7、这块画布上可以画出组成应用程序的各个构件。程序员根据程序界面的要求,从工具箱中选择所需要的工具,并在窗体中画出来,这样就完成了应用程序设计的第一步。 窗体设计器n建立一个新的项目后,自动建立一个窗体,其默认名称和标题为Form1。窗体中布满小点的部分(见图1.11)称为工作区或操作区,这些小点构成了窗体上的网格,用来对齐控件。在默认情况下,窗体上显示网格,其大小为88,所画的控件与网格对齐,如果不想显示网格,或者想改变网格的大小,或者不想让控件与网格对齐,可按如下步骤操作:q(1)执行“工具”菜单中的“选项”命令,打开“选项”对话框。q(2)在对话框左部的窗格中选择“Windows窗体设计器”

8、 。 q(3)在对话框的右部窗格中修改网格的大小、是否显示网格以及是否对齐网格线。 q(4)单击“确定”按钮。 修改默认选项解决方案资源管理器窗口 n在默认情况下,主窗口右侧显示的是解决方案资源管理器窗口,“解决方案”中可以含有用不同语言开发的项目。 q(1)解决方案文件。其扩展名为.sln(solution),相当于Visual Basic 6.0中的工程组(.vbp)文件。q(2)项目文件。其扩展名为.vbproj,每个项目对应一个项目文件 。 q(3)代码模块文件。其扩展名为.vb,在Visual Basic.NET中,所有包含代码的源文件都以.vb作为扩展名。 解决方案资源管理器窗口中

9、的工具栏 q(1)查看代码。打开代码编辑器,对代码进行编辑。q(2)视图设计器。打开窗体设计器,设计用户界面。q(3)刷新。刷新项目的活动视图中被选条目的状态。q(4)显示所有文件。显示当前解决方案中的所有文件夹和文件,包括隐藏文件。 q(5)属性。显示当前所选择的条目的属性。 属性窗口和工具箱窗口 n属性窗口,每个对象都可以用一组属性来刻画其特征,而属性窗口就是用来设置对象(例如窗体或窗体中控件)属性的。 工具箱窗口n这些图标是Visual Basic.NET应用程序的构件,称为图形对象或控件(Control),每个控件由工具箱中的一个图标来表示。 1.5 窗口管理 n在集成开发环境中,可以

10、同时打开多个窗口,Visual Basic.NET采用了十分有效的窗口管理策略,可以提高浏览效率,有效地利用屏幕空间。这一节将介绍Visual Basic.NET先进的窗口管理功能。 主窗口 n通常把窗体设计器、代码窗口、帮助信息等所占据的窗口称为主窗口。 n主窗口有两种显示方式,一种是“选项卡式文档”,另一种是“MDI环境”。在默认情况下,使用的是“选项卡式文档”。这两种方式可以通过“选项”对话框来设置,其操作是,执行“工具”菜单中的“选项”命令,打开“选项”对话框,如图1.19所示,在该对话框中选择“环境”项中的“常规”,在右侧的“设置”部分选择“选项卡式文档”或“MDI环境”,然后单击“

11、确定”按钮即可。注意,所设置的显示方式在下次启动Visual Basic.NET集成开发环境时才能起作用。 通过“选项”设置主窗口的显示方式 “选项卡式文档”方式显示 n在默认情况下,主窗口以“选项卡式文档”方式显示。n在“选项卡组”中显示的是当前打开的窗口的名字,单击某个选项卡,即可打开相应的窗口, “MDI环境”方式显示n如果使用“MDI环境”方式,则主窗口中只显示一个窗口。为了打开其他窗口,必须使用“解决方案资源管理器”。 其他窗口 n除主窗口外,集成开发环境中还有其他一些窗口,这些窗口可以在需要时打开,不需要时关闭或隐藏。 n其他窗口的显示方式主要有4种,分别为“可停靠”、“隐藏”、“

12、浮动”和“自动隐藏” 。Visual Basic. NET 程序设计第2章 类、对象与命名空间 内容提要n面向对象和类n命名空间n对象n窗体n控件n控件的画法和基本操作Visual Basic. NET是真正面向对象的开发工具,全面支持面向对象的程序设计。在这一章中,将介绍面向对象的基本概念和Visual Basic. NET中两种基本的对象,即窗体和控件,同时介绍Visual Basic. NET中新的核心概念,即命名空间(Namespace)。 2.1 面向对象和类 n面向对象不仅仅是一种新的程序设计技术,而且是一种全新的设计和构造软件的思维方法。它使计算机解决问题的方式更加类似于人类的思

13、维方式,更能直接地描述客观世界。从程序设计的角度看,面向对象代表了一种通过模仿人类建立现实世界模型的方法(包括概括、分类、抽象、归纳等)进行软件开发的思想体系。 2.1.1 面向对象 n抽象数据类型 n封装性 n消息和方法 n类和类层次 n继承性 抽象n程序由相关的一组对象(object)组成,对象之间通过发送“消息”相互通信。从概念上讲,可以把一个实体内的数据及其操作所形成的描述称为一个对象。n抽象包括两方面的内容:一是数据抽象,即描述某类对象的公共属性;一是代码抽象,即描述某类对象共有的行为特征。 n抽象是面向对象程序设计中组织程序的主要原则。一个类型结构设计完善的程序可以减少并局部化类型

14、之间的依赖,从而提高软件的可维护性。 封装性 n封装封装(Encapsulation)是一种信息隐藏技术,对象内部对使用者是隐蔽的,使用者只能见到对象封装界面上的信息。 n封装的目的在于将对象的使用者和对象的设计者分开,使用者不必知道行为实现的细节,只要能用设计者提供的消息来访问该对象即可。 消息和方法 n消息消息用来请求对象执行某种操作或回答某些信息的要求。n发送消息的对象称为发送者,接收消息的对象称为接收者。 n可以把全部对象分成各种对象类,每个对象类都定义一组所谓的“方法方法”,实际上可以把它们看作是作用于该类对象上的各种操作。 类和类层次 q类由方法和数据组成,它是对象性质的描述,包括

15、外部特性和内部实现两个方面。 q一个类的上层可以有父类(或超类),下层可以有子类,形成一种层次结构 。q类是一组对象的抽象,它把这些对象所具有的共同特征(包括操作特征和存储特征)集中起来,由这些对象所共享。 继承性 n继承(Inheritance)是指一个类获取另一个类的性质的过程。 n在类的层次结构中,一个类可以有多个子类,也可以有多个基类 多态性 n多态性(Polymorphism)是指一个名字可以具有多种语义。 2.1.2 类和对象 n类是进行封装和数据隐藏的工具。n“对象”是系统中的基本运行实体。n所有的对象都是作为它们的类的相同副本建立的。一旦它作为个别的对象存在,就可以改变它的属性

16、。n为了简单起见,在一般情况下,都不指明对象的类,而是称为“控件”。 2.2 命名空间 n命名空间(Namespaces)称得上是Microsoft.NET中最重要的概念。所谓命名空间,就是让每一个名称都有自己的活动空间,不会互相混淆。命名空间类似于文件系统中目录与文件的关系,用来控制对象标识符的范围,组织对象库和层次结构,简化对象引用,并可防止在引用对象时出现二义性。有了命名空间,就可以方便地组织应用程序要使用的各个类。.NET、Visual Basic.NET或其他语言的代码都包含在命名空间中。 2.2.1 什么是命名空间 qMicrosoft在.NET平台上提供了大量的基础类,这些类构成

17、了.NET的类库。 q每个命名空间含有可以在程序中使用的类、结构、枚举、接口等。 q用户可以定义自己的命名空间,并可访问由命名空间提供的资源。 q应用程序中的所有代码也都在命名空间中。如果没有为代码明确指定命名空间,则系统会根据应用程序的名称(即Visual Basic.NET中的项目名)自动生成一个命名空间。 2.2.2 .NET中的命名空间 n .NET提供的系统类库极为庞大,含有大量的命名空间,每个命名空间包括不同的类(Class)、结构(Structure)和接口(Interface)。大多数命名空间的顶层为System,并可根据功能在逻辑上划分为若干个子命名空间。.NET命名空间的整

18、体结构 浏览.NET命名空间和类 n .NET提供了大量的命名空间和类, Microsoft提供了一个名为WinCV.exe的工具软件,可用来浏览.NET命名空间的共享程序集类 。n工具软件WinCV.exe位于C:Program FilesMicrosoft Visual Studio.NETFrameworkSDKBin目录下。 2.2.3 命名空间的使用n命名空间被集成到.NET环境中,如果不使用命名空间,则无法建立.NET应用程序。而为了在一个应用程序(项目)中使用命名空间,则必须一些方法声明所使用的命名空间。 q项目引用q直接定位q使用Imports语句 项目引用 q项目引用可以根据

19、需要添加或删除。为了向项目中添加引用,可以使用“项目”菜单中的“添加引用”命令。 直接定位q直接定位类似于文件系统中的完整路径。只要给出命名空间的全名,就可以访问其中的任一个类。 例如:为了通过控制台输入/输出流(stdio)读写,可以使用System.Console命名空间中的WriteLine方法: System.Console.WriteLine(This is a test) 这种方法适用于应用程序中的所有命名空间。 再如:回车换行常量CrLf是在Microsoft.VisualBasic.ControlChars命名空间中定义的,为了在程序中用该常量实现回车换行操作,可以编写如下代码

20、: Dim S As String S = AAAAAA & Microsoft.VisualBasic.ControlChars.CrLf & BBBBB MsgBox(S)使用Imports语句 q可以使用Imports语句,隐含地指定要使用的命名空间,应用程序可以使用由该关键字指定的命名空间中的类。qImports语句通常放在代码模块的顶部,用来指定程序中要使用的命名空间。有了这个语句后,每次使用这个命名空间中的类时,就不必显式地给出该命名空间,从而可以减少键盘输入量。 Imports语句的格式如下: Imports aliasname = namespace 例如:上面例子中,可以把M

21、icrosoft.VisualBasic.ControlChars命名空间放在Imports语句中: Imports Microsoft.VisualBasic.ControlChars . Dim S As String S = AAAAAA & CrLf & BBBBB MsgBox(S)Import语句使用注意注意n如果两个命名空间中有同名的类,而且程序中要引入这两个命名空间,则当使用这个类时,必须显式地指定完整的命名空间名,否则会产生二义性。 例如:假定有如下两个命名空间: MyMfgApp.Inventory MyMfgApp.Sales这两个命名空间中均含有Product类,则下面

22、的代码将产生错误: MyMfgApp.Inventory MyMfgApp.Sales . Public Sub DoSomthing() Dim obj As New Product() 定义Product类的一个对象 End Sub 在这种情况下,编译器无法确定该引用哪个Product。如果将代码修改为: Dim obj As New Sales.Product() 则可消除由Product引起的二义性。2.3 对象 n从前面的介绍可以知道,对象是类的实例,是具有特殊属性(数据)和行为方式(方法)的实体。在用Visual Basic.NET进行程序设计时,实际上就是在使用对象或建立对象。

23、2.3.1 对象的属性、事件和方法n对象的属性是一个对象的特性,不同的对象有不同的属性。对象常见的属性有标题(Text)、名称(Name)、颜色(Color)、字体大小(Fontsize)、是否可见(Visible)等。 除了用属性窗口设置对象属性外,也可以在程序中用程序语句设置,一般格式如下: 对象名.属性名称 新设置的属性值 例如:假定窗体上有一个文本框(TextBox)控件,其名称为Display,它的属性之一是Text,即在文本框中显示指定的内容。如果执行: Display. Text = Good morning!则把字符串“Good morning!”赋给Display文本框控件的

24、Text属性。在这里,Display是对象名,Text是属性名,而字符串“Good Morning!”是所设置的属性值。再如: Display. Visible = False 表示窗体上有一个文本框控件,名字为Display,其属性Visible为False,程序运行时,该对象不显示。如果赋予值True,则运行时显示该文本框。 qVisual Basic.NET是采用事件驱动编程机制的语言。 q所谓事件(Event),是由Visual Basic.NET预先设置好的、能够被对象识别的动作。q响应某个事件后所执行的操作通过一段程序代码来实现,这样的一段程序代码叫做事件过程(Event Proc

25、udure)。 事件过程的一般格式如下: Private Sub 对象名称_事件名称(对象引用, 事件信息) Handles事件处理程序 . 事件响应程序代码 . End sub例如: Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click . End Subn方法是对象执行的操作,它实际上是在类中定义的过程。 其调用格式为: 对象名称对象名称 . 方法名称方法名称例如,假定有一个名为Form1的窗体,则用 Me.Hide可以使窗体

26、隐藏,而用 Me.Show可以使窗体显示。这里的Hide和Show都是窗体类(对象)的方法。2.3.2对象属性设置 n对象属性可以通过代码设置,也可通过属性窗口设置。前者称为“在在运行期间设置属性运行期间设置属性”,而后者称为“在设计阶在设计阶段设置属性段设置属性”。n可以用三种方法在设计阶段设置对象属性q(a)直接键入新属性值 q(b)选择输入,即通过下拉列表选择所需要的属性值 q(c)利用对话框设置属值(a)直接键入新属性值q例如,为了把按钮的Text属性设置为“按钮测试”,可按如下步骤操作 :n(1)在窗体上画一个按钮(Button1)(将在2.6节介绍控件的画法)。n(2)选择该按钮(

27、单击该按钮内部),然后激活属性窗口。n(3)在属性列表中找到Text属性,并双击该属性条。n(4)在Text右侧一列上输入“按钮测试”(b)选择输入,即通过下拉列表选择所需要的属性值q有些属性(例如Backcolor、ControlBox、Enabled、TopMost等)取值的可能情况是有限的,可能只有两种、几种、十几种或几十种,对于这样的属性,可以在下拉列表中选择所需要的属性值。 (c)利用对话框设置属值q对于某些属性,设置框的右端会显示省略号,即三个小点(.),可以利用这个对话框设置所需要的属性。2.4.1窗体的结构与属性 n窗体属性决定了窗体的外观和操作 qAcceptButton(接

28、受按钮) qBackColor(背景颜色) qCancelButton(“取消”按钮) qControlBox(控制框) qEnabled(允许) qFormBorderStyle(边框类型) qFont(字形) qForColor(前景颜色)qIcon(图标) qLocation(定位)qMaximizeBox、MinimizeBoxqName(名称)qSize(尺寸) qText(标题)qWindowState(窗口状态)2.4.2窗体事件 qClick(单击)事件 qDblClick(双击)事件 qLoad(装入)事件 qClosed(关闭)事件 qActivated(活动)、Deact

29、ivate(非活动)事件 qPaint(绘画)事件 2.5 控件 n窗体和控件都是Visual Basic. NET中的对象,它们是应用程序的“积木块”,共同构成用户界面。因为有了控件,才使得Visual Basic. NET不但功能强大,而且易于使用。控件以图标的形式放在“工具箱”中,每种控件都有与之对应的图标。在一般情况下,工具箱位于窗体的左侧。nVisual Basic. NET提供了大量的控件,这些控件分属于不同的项目类型。在建立新项目时,Visual Basic. NET根据所建立的项目类型,自动把相应的控件添加到工具箱中。本书将只讨论Windows应用程序,只涉及Windows窗体

30、控件。这一节对Windows窗体控件作简要介绍,将在第6章介绍部分控件的用法。2.5.1 Windows窗体控件 n工具箱中列出Windows窗体控件,如图2.19所示。工具箱实际上是一个窗口,称为工具箱窗口,可以通过单击右上角的“”关闭。为了打开工具箱,可以执行“视图”菜单中的“工具箱”命令或单击标准工具栏中的“工具箱”按钮(或按Ctrl+Alt+X键)。 2.5.2 工具箱的管理 n控件的复制和删除 n改变排列顺序 n定义工具箱 控件的复制和删除n执行弹出式菜单中的“剪切”命令,可以把所选择的控件从工具箱中删除,并复制到剪贴板中;执行“复制”命令,则可把控件复制到剪贴板;而如果执行“删除”

31、命令,则删除该控件,但不复制到剪贴板。 改变排列顺序 n可以通过弹出式菜单中的“上移”或“下移”命令来实现。每单击一次“上移”或“下移”命令,可以使当前被选择的控件向上或向下移动一个位置。 定义工具箱n可以通过“自定义工具箱”命令对工具箱进行定义。执行该命令后,将打开“自定义工具箱”对话框,如图2.22所示。 n“自定义工具箱”对话框包括两个选项卡,分别为“COM组件”和“.NET框架组件” 。2.6 控件的画法和基本操作 n在设计用户界面时,要在窗体上画出各种所需要的控件。也就是说,除窗体外,建立界面的主要工作就是画控件。这一节将介绍控件的画法和基本操作。 2.6.1控件的画法 n可以通过多

32、种方法在窗体上画一个控件。第一种方法步骤如下(以画文本框为例):q(1)单击工具箱中的文本框图标,该图标反相显示。q(2)把鼠标光标移到窗体上,此时鼠标光标变为“”号(“”号的中心就是控件左上角的位置),并带有相应控件的小图标。q(3)把“”号移到窗体的适当位置,按下鼠标左按钮,不要松开,并向右下方拖动鼠标,窗体上将出现一个方框。q(4)随着鼠标向右下方移动,所画的方框逐渐增大。当增大到认为合适的大小时,松开鼠标器按钮,这样就在窗体上画出一个文本框控件。2.6.2控件的基本操作 n控件的缩放和移动 n控件的复制和删除 n通过属性窗口改变对象的位置和大小 n选择控件 Visual Basic.

33、NET程序设计第3章 简单Visual Basic.NET程序设计 内容提要n语句n编写简单的Visual Basic. NET应用程序n程序的保存和装入n程序的运行前一章介绍了Visual Baisc.NET中对象的概念,讨论了两种最主要的对象,即窗体和控件。这一章将通过一个简单例子说明Visual Basic.NET应用程序开发的一般过程。 3.1 语句3.1.1 Visual Basic中的语句 程序是对计算机要执行的一组操作序列的描述,而高级语言源程序的基本组成单位是语句,它是执行具体操作的指令。 q语句的构成 q自动语法检查 q复合语句行 q续行 语句的构成qVisual Basic

34、中的语句由Visual Basic关键字、对象属性、运算符、函数以及能够生成Visual Basic编辑器可识别指令的符号组成。每个语句以回车键结束,一个语句行的最大长度不能超过1023个字符。在书写语句时,必须遵循一定的规则,这种规则称为语法。 自动语法检查 q在输入语句的过程中,Visual Basic.NET将自动对输入的内容进行语法检查,如果发现了语法错误,则在出错的代码下面显示弯曲的下划线;此时如果把鼠标光标移到下划线上,则在程序行下面用一个方框显示出错的原因 q在输入语句时,关键字(命令词、函数等)可以不必区分大小写。 复合语句行 q在一般情况下,输入程序时要求一行一句,一句一行。

35、但Visual Basic.NET允许使用复合语句行,即把几个语句放在一行中,各语句之间用冒号(:)隔开。一个语句行的长度最多不能超过1023个字符。 续行 q当语句较长时,为了便于阅读程序,可以通过续行符把一个语句分别放在几行中。Visual Basic.NET中使用的续行符是下划线(_)。 q续行符与它前面的字符之间至少要有一个空格。 3.1.2 赋值、注释、暂停和结束语句 q赋值语句可以把指定的值赋给某个变量或某个带有属性的对象。q注释语句是为了提高程序的可读性,通常应在程序的适当位置加上必要的注释。 q暂停语句的作用类似于执行“调试”菜单中的“全部中断”命令。用于保持文件打开,并且不退

36、出Visual Basic. NET。 q结束语句通常用来结束一个程序的执行。q多个语句放在同一行中。在这种情况下,各语句之间必须用冒号隔开。q例如:a = 3 : b = 4 : c = 5 赋值语句n其一般格式为:目标操作符 源操作符 例如: Total = 99 把数值常量99赋给数值变量Total ( 是注释符) ReadOut = Good Morning! 把字符串常量赋给字符串变量Try1 = Val(TextBox1.Text) 把对象TextBox1的Text属性转换为 数值赋给数值变量 TextBox1.Text = Str(Total) 把数值变量Total转换为字符串赋

37、给带有 Text属性的对象 TextBox1.Text = TextBox2.Text 把带有Text属性的对象TextBox2赋给带有 Text属性的对象TextBox1注释语句 n一般格式为: REM 注释内容或 注释内容例如: This is a test stantement REM 这是一个子程序暂停语句(Stop) n格式:Stop nStop语句的主要作用是把编译程序置为中断(Break)模式,以便对程序进行检查和调试。n程序调试结束后,生成可执行文件之前,应删去代码中的所有Stop语句。 结束语句(End) n格式:End End语句通常用来结束一个程序的执行。可以把它放在事件

38、过程中,例如: Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click End End Sub该过程用来结束程序,即当单击按钮时,立即结束程序的运行。End语句除用来结束程序外,在不同的环境下还有其他一些用途,包括:End Sub 结束一个Sub过程End Function 结束一个Function过程End If 结束一个If语句块End Structure 结束结构类型的定义End Select 结束情况语句 End Enum

39、结束枚举枚举的定义当在程序中执行End语句时,将终止当前程序,重置所有变量,并关闭所有数据文件。3.2 编写简单的VB.NET应用程序n用传统的面向对象的语言进行程序设计时,主要的工作就是编写程序代码,遵循编程编程调试调试改错改错运行运行这样一种模式。在用Visual Basic.NET开发应用程序时,完全打破了这种模式,使程序的开发大为简化,而且更容易掌握。 3.2.1 用Visual Basic.NET开发应用程序的一般步骤 Visual Basic.NET的最大特点,就是以最快的速度和效率开发具有良好用户界面的应用程序。如前所述,Visual Basic.NET的可视对象已被抽象为窗体和

40、控件,因而大大简化了程序设计。一般来说,在用Visual Basic.NET开发Windows应用程序时,需要以下三步: q建立可视用户界面q设置可视界面特性q编写事件驱动代码建立用户界面 n用户界面由对象,即窗体和控件组成,控件放在窗体上,程序中的所有信息都要通过窗体显示出来,它是应用程序的最终用户界面。在应用程序中要用到哪些控件,就在窗体上建立相应的控件。程序运行后,将在屏幕上显示由窗体和控件组成的用户界面。n在Visual Basic.NET环境下建立一个新的“Windows应用程序”项目后,屏幕上将显示一个窗体,默认名称为Form1,可以在这个窗体上设置用户界面。如果要建立新的窗体,可

41、以通过“项目”菜单中的“添加Windows窗体”命令来实现。 设置窗体和控件的属性 n建立界面后,就可以设置窗体和每个控件的属性。在实际的应用程序设计中,建立界面和设置属性可以同时进行,即每画完一个控件,接着就设置该控件的属性。当然,也可以在所有的对象建立完之后再回过头来设置每个对象的属性。究竟用哪种方法,可以根据自己的习惯选定,不必拘泥。可以通过不同的方式设置窗体或控件的属性。 编写代码 nVisual Basic.NET采用事件驱动编程机制,因此大部分程序都是针对窗体中各个控件所能支持的方法或事件编写的,这样的程序称为事件过程。例如,按钮可以接收鼠标单击事件,如果单击该按钮,鼠标单击事件就

42、调用相应的事件过程来作出响应。n在多数情况下,特别是小型应用程序,所编写的程序通常由事件过程组成,即针对控件或窗体的事件编写代码。n可以用以下四种方法进入事件过程(即打开“代码窗口”): q(1)双击已建立好的控件。q(2)执行“视图”菜单中的“代码”命令。q(3)按F7键。q(4)在“解决方案资源管理器”窗口中选择窗体文件(Form1.vb),然后单击“查看代码”按钮。3.2.2 编写Visual Basic.NET应用程序 n程序要求:在屏幕上开辟一个窗口,窗口的下部有三个按钮,其中左边按钮中标有“显示”,中间按钮中标有“清除”,右边按钮中标有“结束”。当用鼠标单击左边按钮时,屏幕上部的文

43、本框中显示“欢迎使用Visual Basic.NET”;如果单击中间按钮,则清除文本框中显示的内容;而如果单击右边的按钮,则结束程序。 n步骤:q建立可视用户界面q设置可视界面特性q编写事件驱动代码建立用户界面 n为了建立应用程序,首先应建立一个新的项目,这可以通过“文件”菜单“新建”子菜单中的“项目”命令来实现。执行该命令后,将打开“新建项目”对话框,在该对话框的“名称”栏中输入test1,在“位置”栏内输入d:test,选择“关闭解决方案”单选按钮,然后单击“确定”按钮,即可建立一个新的项目。如果刚启动Visual Basic.NET,则可通过单击“起始页”中的“新建项目”按钮打开“新建项

44、目”对话框。n一个项目包含两部分内容,即对象和代码(Code),其中对象通常指的是窗体(Form)和控件(Control)。窗体是程序运行时的背景窗口和对话框,控件是放置在窗体中的具体的对象,而代码则是控制运行的程序。在一般情况下,每个可以执行的项目至少包括一个窗体,可以根据应用程序的设计要求来改变其位置和大小。n用户界面由对象组成,建立用户界面实际上就是在窗体上画出代表各个对象的控件。由题意可知,需要建立的界面包括5个对象,即1个窗体和4个控件,其中3个控件是按钮,1个是文本框, n可以按下面的步骤建立用户界面:q(1)单击工具箱中的命令按钮图标,在窗体的适当位置画一个按钮(按钮1),画完后

45、,按钮内自动标有“Button1”。q(2)重复步骤1,分别画出第二个按钮和第三个按钮,两个按钮内分别自动标有“Button2”和“Button3”。q(3)单击工具箱中的文本框图标,然后在窗体的适当位置画出文本框控件,文本框内自动标有“TextBox1”。q(4)上述4个控件画完后,根据具体情况,对每个控件的大小和位置进行适当调整。 设置属性 n前面画出的4个控件构成了用户界面,这4个控件就是4个对象。实际上,除4个控件外,还有一个对象,这就是窗体,其当前名称(Name属性)和标题(Text属性)为“Form1”。在建立用户界面后,每个对象都有一个默认标题(Text属性),分别为Button

46、1、Button2、Button3、TextBox1和Form1。Text是对象的一种属性,为了使对象的标题符合设计要求,应当对每个对象的Text属性进行修改。 属性设置列表(格式1)n控件放在窗体中,窗体及其控件构成了用户界面。程序运行后,如果对界面不满意,可以结束运行,然后进行调整。 表3.1 对象属性设置(格式1) 对 象 名称(Name) 标题(Text) 窗体 Form1 Visual Basic.NET 应用程序设计示例 左按钮 Button1 显示 中按钮 Button2 清屏 右按钮 Button3 结束 文本框 TextBox1 空白 属性设置列表(格式2) 表3.2 对象属

47、性设置(格式2) 对 象 属性 设置值 窗体 Name Form1 Text Visual Basic.NET 应用程序设计示例 左按钮 Name Button1 Text 显示 中按钮 Name Button2 Text 清屏 右按钮 Name Button3 Text 结束 文本框 Name TextBox1 Text 空白 字体 宋体 字形 粗斜体 大小 16 编写代码 nVisual Basic.NET的程序代码是针对某个对象事件编写的,每个事件对应一个事件过程。n用鼠标单击(Click)一个对象是经常用到的事件,可以针对这样的事件编写事件过程。(1)程序代码窗口 q主窗口选项卡。q

48、“类名”栏。q“方法名称”栏。 qForm1类定义开始。 q指定继承。 qVisual Basic.NET自动为Form1生成的程序代码。 qForm1类定义结束。q以大纲方式显示源代码。 q拆分栏。 (2)编写过程代码 n过程代码是针对某个对象事件编写的。为了指明某个对象的操作,必须在方法或属性前加上对象名,中间用句点(.)隔开。 例如: TextBox1.Text = 欢迎使用Visual Basic.NET 这里的TextBox1是控件(对象)名,Text是文本框的属性。执行上面的语句后,将在TextBox1文本框中显示“欢迎使用Visual Basic.NET”。 如果不指出对象名,则

49、方法或属性是针对当前窗体的。注意,与控件的属性设置不同,当通过代码设置窗体的标题(Text属性)时,不能用窗体名称(如Form1)作为对象名。例如: Form1.Text = 程序设计是错误的,必须写作 Me.Text = “程序设计“ 或 Text = 程序设计本例中的3个事件Private Sub Button1_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Button1.Click TextBox1.Text = 欢迎使用Visual Basic.NETEnd SubPrivate Sub Bu

50、tton2_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Button2.Click TextBox1.Text = End SubPrivate Sub Button3_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button3.Click EndEnd Sub代码编辑器中的显示3.2.3 代码编辑器 n大纲模式与自动格式化n自动列出成员名单n自动显示快速信息 n Windows窗体设计器生成初

51、始代码 大纲模式与自动格式化自动列出成员名单自动显示快速信息Windows窗体设计器生成初始代码n从前面的介绍可以看出,在建立窗体时,Visual Basic.NET会自动生成一些代码,除前面已介绍的外,还有一个“Windows 窗体设计器生成的代码”,在默认情况下,这部分代码是折叠的,并用一个方框显示出来(见前面的图3.4)。 初始代码#Region Windows 窗体设计器生成的代码 Public Sub New() MyBase.New() 该调用是 Windows 窗体设计器所必需的。 InitializeComponent() 在 InitializeComponent() 调用之

52、后添加任何初始化 End Sub 窗体重写处置以清理组件列表。 Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub Windows 窗体设计器所必需的 Private components As System.ComponentModel.IContainer 注意

53、:以下过程是 Windows 窗体设计器所必需的 可以使用 Windows 窗体设计器修改此过程。 不要使用代码编辑器修改它。 Friend WithEvents Button1 As System.Windows.Forms.Button Friend WithEvents Button2 As System.Windows.Forms.Button Friend WithEvents Button3 As System.Windows.Forms.Button Friend WithEvents TextBox1 As System.Windows.Forms.TextBox Privat

54、e Sub InitializeComponent() Me.Button1 = New System.Windows.Forms.Button() Me.Button2 = New System.Windows.Forms.Button() Me.Button3 = New System.Windows.Forms.Button() Me.TextBox1 = New System.Windows.Forms.TextBox() Me.SuspendLayout() Button1 Me.Button1.Font = New System.Drawing.Font(黑体, 12.0!, _

55、System.Drawing.FontStyle.Regular, _ System.Drawing.GraphicsUnit.Point, CType(134, Byte) Me.Button1.Location = New System.Drawing.Point(24, 80) Me.Button1.Name = Button1 Me.Button1.Size = New System.Drawing.Size(75, 32) Me.Button1.TabIndex = 0 Me.Button1.Text = 显示 Button2 Me.Button2.Font = New System

56、.Drawing.Font(黑体, 12.0!, _ System.Drawing.FontStyle.Regular, _ System.Drawing.GraphicsUnit.Point, CType(134, Byte) Me.Button2.Location = New System.Drawing.Point(120, 80) Me.Button2.Name = Button2 Me.Button2.Size = New System.Drawing.Size(75, 32) Me.Button2.TabIndex = 1 Me.Button2.Text = 清除 Button3

57、Me.Button3.Font = New System.Drawing.Font(黑体, 12.0!, _ System.Drawing.FontStyle.Regular, _ System.Drawing.GraphicsUnit.Point, CType(134, Byte) Me.Button3.Location = New System.Drawing.Point(224, 80) Me.Button3.Name = Button3 Me.Button3.Size = New System.Drawing.Size(75, 32) Me.Button3.TabIndex = 2 M

58、e.Button3.Text = 结束 TextBox1 Me.TextBox1.Font = New System.Drawing.Font(宋体, 15.75!, _ (System.Drawing.FontStyle.Bold Or _ System.Drawing.FontStyle.Italic), _ System.Drawing.GraphicsUnit.Point, CType(134, Byte) Me.TextBox1.Location = New System.Drawing.Point(16, 24) Me.TextBox1.Name = TextBox1 Me.Tex

59、tBox1.Size = New System.Drawing.Size(304, 31) Me.TextBox1.TabIndex = 3 Me.TextBox1.Text = Form1 Me.AutoScaleBaseSize = New System.Drawing.Size(6, 14) Me.ClientSize = New System.Drawing.Size(336, 117) Me.Controls.AddRange(New System.Windows.Forms.Control() _ Me.TextBox1, Me.Button3, Me.Button2, Me.Bu

60、tton1) Me.Name = Form1 Me.Text = Visual Basic.NET 应用程序设计示例 Me.ResumeLayout(False) End Sub#End Region 3.3 程序的保存和装入n前一节设计了一个简单的Visual Basic.NET应用程序。设计结束并初步检查没有错误后,通常应先保存程序,然后再运行程序,看是否符合设计要求。当然,也可以先对程序进行调试和运行,然后再保存。 3.3.1 保存程序 n在建立一个新的应用程序(项目)时,Visual Basic.NET将根据所提供的项目名在指定的文件夹中建立一个子文件夹,并在这个子文件夹中保存与应用程

61、序有关的所有信息,包括解决方案文件名(.sln)、项目文件名(.vbproj)、窗体文件名(.vb)等。 在程序设计的过程中,为了避免因断电或其他原因造成信息丢失,应及时将正在编辑的代码或正在设计的窗体存盘,这可以通过“文件”菜单中的“保存”(Ctrl+S)或单击工具栏上的“保存”按钮来实现。而如果执行“文件”菜单中的“全部保存”(Ctrl+Shift+S)或标准工具栏上的“全部保存”按钮,则可保存当前项目中的所有文件。 3.3.2 装入程序 n启动Visual Basic.NET后,可以通过下述操作把前面建立的应用程序装入内存。n也可以直接在“文件名”栏中输入解决方案文件或项目文件(包括路径

62、)。例如输入d:testtest1.sln或d:testtest1.vbproj。 q(1)执行“文件”菜单“打开”子菜单中的“项目”命令(或按Ctrl+O),显示“打开项目”对话框,如图3.14所示。q(2)在“查找范围”栏中选择前面存盘的文件夹“d:test”,然后选择“test1”文件夹。q(3)选择test.sln或test.vbproj。q(4)单击“打开”按钮(或直接双击test1.sln或test1.vbproj)。“打开项目”对话框 3.4 程序的运行 q设计完程序并存入磁盘后,就可以运行程序。q运行程序有两个目的,一是输出结果,二是发现错误。q运行程序通过“调试”菜单中的“启

63、动”命令(工具栏上的“启动”按钮或热键F5)来实现。3.5 VB.NET应用程序的工作方式 q在Windows操作系统中,大多数应用程序以窗口的形式出现,而在不同的窗口之间传送信息,则是Windows操作系统与应用程序之间、不同的应用程序之间相互交流的主要形式。 qWindows下的每个应用程序都是基于事件和消息的,并包含一个主事件循环,该循环持续反复检测是否有用户事件发生,当检测到一个用户事件时,程序就对之作出响应。qWindows接收到这些事件后,会产生一些相应的消息,应用程序接收到这些消息后,会根据每个消息的用途,产生一系列的执行动作。q基于Windows程序设计方法建立的程序是事件(消

64、息)驱动的,事件驱动的程序不是由程序的顺序来控制,而是由所发生的事件来控制。 q而在面向对象的程序设计中,编程人员要以“对象”为中心来设计模块,而不是以“过程”为中心来考虑应用程序的结构。 q在事件驱动应用程序中,代码不是按预定的顺序执行,而是在响应不同的事件时执行不同的代码段。 事件驱动应用程序的典型操作序列 q(1)启动应用程序,加载和显示窗体。q(2)窗体或窗体上的控件接收事件。事件可以由用户引发(例如键盘操作),可以由系统引发(例如定时器事件),也可以由代码间接引发(例如,当代码加载窗体的Load 事件时)。q(3)如果相应的事件过程中存在代码,则执行该代码。q(4)应用程序等待下一次

65、事件。Visual Basic. NET程序设计第4章 Visual Basic. NET程序设计基础 内容提要n基本数据类型n变量和常量n变量的隐式声明与类型转换n变量的生存期和生存期n常用内部函数n运算符与表达式前一章通过一个简单例子介绍了用Visual Basic.NET设计应用程序的一般过程。这一章我们将介绍构成Visual Basic.NET应用程序的基本元素,包括数据类型、常量、变量、内部函数、运算符和表达式等。 4.1 基本数据类型 n数据是程序的必要组成部分,也是程序处理的对象。 nVisual Basic.NET提供了系统定义的数据类型,并允许用户根据需要定义自己的数据类型。

66、 nVisual Basic.NET提供的基本数据类型主要有字符串字符串型数据和数值数值型数据,此外还提供了字节、对象、日期、布尔等其他类型其他类型数据类型。 字符和字符串 n(1)字符(Char):Char数据类型是单个双字节(16 位)Unicode字符,以16位(2个字节)无符号的数值形式存储。每2个字节数值存储一个 Unicode 字符。等价的.NET数据类型是System.Char。n(2)字符串(String):字符串是一个字符序列,由ASCII字符组成,包括标准的ASCII字符和扩展ASCII字符。在Visual Basic.NET中,字符串是放在双引号内的若干个字符,其中长度为

67、0(即不含任何字符)的字符串称为空字符串。 字符串通常放在双引号中,例如: Hello We are students Visual Basic.NET程序设计程序设计 “” (空字符串) Visual Basic.NET中的字符串的长度是不确定的,可以从0到231(2的31次幂,约21亿)个Unicode字符,每个字符占两个字节。 等价的.NET数据类型是System.String。数值 q(1)整型 q(2)浮点数 q(3)Decimal 数据类型 (1)整型 整型数是不带小数点和指数符号的数,在计算机内部以二进制补码形式表示。 短整型(Short):以两个字节(16位)的二进制码表示和参

68、加运算,其取值范围为 -32768到32767。 等价的.NET数据类型是System.Int16。 整型(Integer):以带符号的4字节(32位)二进制数存储,其取值范围为-2147483648到+2147483647。 等价的.NET数据类型是System.Int32。 长整型(Long):以带符号的8字节(64位)二进制数存储,其取值范围为-9223372036854775808到9223372036854775807。 等价的.NET数据类型是System.Int64。(2)浮点数 单精度数(Single):以4个字节(32位)存储,其中符号占1位,指数占8位,其余23位表示尾数,

69、此外还有一个附加的隐含位。 等价的.NET数据类型是System.Single。 双精度浮点数(Double):用8个字节(64位)存储,其中符号占1位,指数占11位,其余52位用来表示尾数,此外还有一个附加的隐含位。等价的.NET数据类型是System.Double。 (3)Decimal 数据类型 Decimal类型以128位(16个字节)带符号的整数形式存储,并除以一个10的幂数,称为变比因子。这个变比因子决定了小数点右面的数字位数,其范围从0到28。当变比因子为0(没有小数位)时,最大的可能值为 +/-79,228,162,514,264,337,593,543,950,335。而在有

70、 28 个小数位的情况下,最大值为 +/-7.9228162514264337593543950335,而最小的非零值为 +/-0.0000000000000000000000000001(+/-1E-28)。 等价的.NET数据类型是System.Decimal。其他数据类型 (1)字节(Byte):字节实际上是一种数值类型,以1个字节的无符号二进制数存储,其取值范围为0到255。 等价的.NET数据类型是System.Byte。 (2)布尔(Boolean):Boolean类型以16位(2个字节)的数值形式存储,但取值只能是True或False。在将数值数据类型转换为Boolean值时,0

71、转换为False,而其他所有值(非0值)都将转换为True;而当把Boolean值转换为数值类型时,False将转换为0,True将转换为-1。 等价的.NET数据类型是System.Boolean。 (3)日期(Date):日期存储为IEEE 64位(8 个字节)整数值形式,其可以表示的日期范围从公元1 年 1月1日到9999年12月31日,而时间可以从 0:00:00 到 23:59:59。任何可辨认的文本日期都可以赋值给日期变量。日期文字须以数字符号 (#) 括起来,格式必须为 m/d/yyyy,如 #5/31/2007#。此外,Date会基于可由计算机识别出的短日期格式来显示日期。时间

72、则基于可由计算机识别的时间格式(12或24小时制)来显示。 等价的.NET数据类型是System.DateTime。 (4)对象(Object):以32位(4个字节)的地址形式存储,此地址为对象引用。可将任何引用类型(类或接口)赋给声明为Object的变量。Object 变量也可引用其它任何数据类型的数据。 等价的.NET数据类型是System.Object。 4.2 常量和变量 n前一节介绍了Visual Basic.NET中使用的数据类型。在程序中,不同类型的数据既可以以常量的形式出现,也可以以变量的形式出现。常量在程序执行期间其值是不发生变化的,而变量的值是可变的,它代表内存中指定的存储

73、单元。 4.2.1 常量 nVisual Basic.NET中的常量分为3种,分别为文字常量、符号常量和系统常量。 1. 文字常量 n文字常量也称直接常量或字面量(Literal)。Visual Basic.NET有4种文字常量,即字符和字符串常量、数值常量、布尔常量和日期常量。 (1)字符和字符串常量 字符和字符串常量由字符组成,可以是除双引号和回车符之外的任何ASCII字符,其长度不能超过231(约20亿)个字符。例如: A $25,000.00 Number of Employees (2)数值常量 数值常量共有5种表示方式,即短整数、整数、长整数、浮点数和十进制数。 短整数:有三种形式

74、,即十进制、十六进制和八进制。 十进制短整数:由一个或几个十进制数字(09)组成,可以带有正号或负号,其取值范围为-3276832767,例如624、-4536、+265等。 十六进制短整数:由一个或几个十六进制数字(09及AF或af)组成,前面冠以&H(或&h),其取值(绝对值,下同)范围为&H0&HFFFF。例如&H76、&H32F等。 八进制短整数:由一个或几个八进制数字(07)组成,前面冠以&(或&O),其取值(绝对值,下同)范围为&O0&O177777。例如&O347、&O1277等。 整数:也有三种形式。 十进制整数:其组成与十进制整型数相同,取值范围为-2147483648214

75、7483647。例如7841277、6769546。 十六进制整数:由十六进制数字组成,以&H(或&h)开头。取值范围为&H0&HFFFFFFFF。例如&H567、&H1AAAB。 八进制整数:由八进制数字组成。以&或&O开头,取值范围为&O0&O37777777777。例如&O347、&O5557733。 长整数:也有三种形式。 十进制长整数:其组成与十进制整型数相同,取值范围为-9,223,372,036,854,775,8089,223,372,036,854,775,807。例如628654341498、51926769546。 十六进制长整数:由十六进制数字组成,以&H(或&h)开头

76、,以&结尾。取值范围为&H0&H7FFFFFFFFFFFFFFF&。例如&HC6D28&、H6D8A45&。 八进制长整数:由八进制数字组成。以&或&O开头,以&结尾,取值范围为&O0&O777777777777777777777&。例如&O564347&、&O27131376&。 浮点数:也称实数,分为单精度浮点数和双精度浮点数。浮点数由尾数、指数符号和指数三部分组成,其中尾数本身也是一个浮点数。指数符号为E(单精度)或D(双精度);指数是整数。其取值范围见上一节。指数符号E或D的含义为“乘以10的幂次”。例如在 235.988E-7 和 2359D6中,235.988和2359是尾数,E和

77、D是指数符号,它们表示235.988乘以10的-7次幂和2359乘以10的6次幂,其实际值分别为0.0000235988和2359000000。 十进制型数(Decimal): (3)布尔常量 也称逻辑常量,它只取True(真)和False(假)两个值。 (4)日期常量 任何在字面上可以被认为日期和时间的字符串,只要用两个“#”括起来,都可以作为日期型常量。例如#05/16/2007#、#September 15, 2007#、#8/18/2007 3:30:00 PM#、#8:30:00 AM#等。2. 符号常量 在Visual Basic.NET中,可以定义符号常量,用来代替数值或字符串。

78、一般格式为:Public | Private Const 常量名 As 类型表达式, 常量名 As 类型表达式例如: Public Const MyString As String = HELP Private Const MyInt As Integer = 5分别定义了一个字符串常量和一个整型常量。再如: Public Const Maxchars As Integer = 254, Maxbue As Double = Maxchars + 1234.56在一个语句中定义了两个常量,其类型分别为Integer和Double。 3. 系统常量 q Visual Basic.NET提供了大量

79、预定义的常量,可以在程序中直接使用,这些常量均以小写字母vb开头。在程序代码中,可以直接使用系统常量。q可以通过“对象浏览器”查看系统常量。4.2.2 变量 n数值存入内存后,必须用某种方式访问它,才能执行指定的操作。在Visual Basic.NET中,可以用名字表示内存位置,这样就能访问内存中的数据。一个有名称的内存位置称为变量(Variable)。和其他语言一样,Visual Basic.NET也用变量来储存数据值。每个变量都有一个名字和相应的数据类型,通过名字来引用一个变量,而数据类型则决定了该变量的储存方式。 1. 命名规则 q(1)名字只能由字母、数字和下划线组成;q(2)名字的第

80、一个字符必须是英文字母,最后一个字符可以是类型说明符;q(3)名字的有效字符为255个;q(4)不能用Visual Basic.NET的保留字作变量名,但可以把保留字嵌入变量名中;同时,变量名也不能是末尾带有类型说明符的保留字。 2. 变量的类型和定义 (1)用类型说明符来标识 把类型说明符放在变量名的尾部,可以标识不同的变量类型。其中%表示整型(Integer),&表示长整型(Long),!表示单精度型(Single),#表示双精度型(Double),表示十进制型(Decimal),$表示字符串型(String)。例如: Total% Amount# Lname$ Boolean、Byte、

81、Char、Date、Objet和Short等数据类型没有类型说明符。注意注意,在默认情况下,Visual Basic.NET编译器强制使用显式变量声明,直接用类型说明符不能声明变量。 (2)在定义变量时指定其类型 可以用下面的格式定义变量: Declare 变量名 As 类型 这里的“Declare”可以是Dim、Public、Protected、Friend、Protected Friend、Private、 Shared或Static,“As”是关键字,“类型”可以是基本数据类型或用户定义的类型。 用Dim、Public等都可以声明变量,其格式是一样的,只是所声明的变量的作用域或生存期不一

82、样。下面介绍如何用Dim语句声明变量。 用Dim语句可以把一个变量声明为指定的类型。例如: Dim Varl As Integer (把Varl定义为整型变量) Dim Total As Double (把Total定义为双精度变量)说明:(1)用Dim语句声明的变量可用于包含该Dim语句所在程序的所有代码。 (2)Dim语句不但可以用来声明变量的数据类型,而且可以对变量进行初始化。 (3)如果在声明时不指定变量的初始值,Visual Basic.NET将把它初始化为相应数据类型的默认值。(表4.3)(4)在一个Dim语句中可以声明多个变量 (5)应当把声明语句放在变量所出现的区域的开头。(6

83、)Static用于在过程中定义静态变量及数组变量。 (7)Public用来定义全局变量或数组。 4.3 变量的隐式声明与类型转换 n在默认情况下,Visual Basic.NET是强类型语言。也就是说,每个变量(包括局部变量)必须在使用前声明,否则会出错,因此,对所有变量必须提供显式声明。利用编译器选项,可以改变这种限制。在这一节中,将介绍如何实现变量的隐式声明,同时介绍不同变量的类型转换。 4.3.1 变量的隐式声明 1. 编译器选项 (1)Option Explicit语句语句 格式:Option Explicit On | Off Option Explicit语句在模块层使用,用来确定

84、该模块中所有变量的声明方式。 在下面的例子中,用Option Explicit语句强制所有变量的显式声明,如果试图使用未声明的变量,则在编译时会出错。 Option Explicit On 强制变量声明 Dim MyVar as Integer 声明变量 MyInt = 10 未声明的变量,出错 MyVar = 10 声明的变量,不出错。 (2)Option Compare语句语句 格式:Option Compare Binary | Text Option Compare语句出现在模块层,用来指定字符串数据的默认比较方法。 (3)Option Strict语句语句 格式:Option Str

85、ict On | Off 在一般情况下,Visual Basic.NET 允许数据类型的隐式转换。Option Strict语句用来指定数据类型的转换限制。 如果使用On,则不允许自动类型转换,在需要时必须显式地转换类型;如果参数为Off,则可进行自动类型转换。如果省略参数,则默认为Off。 上述3个编译器选项也可以在“属性页”对话框中设置。其操作是:在“解决方案资源管理器”窗口中,用鼠标右键单击项目的名字,弹出一个菜单,单击该菜单中的“属性”命令,将打开“属性页”对话框,选择“通用属性”中的“生成”选项卡,将显示“编译器默认值” 2. 通用数据类型 为了使用通用数据类型,必须把编译器选项St

86、rict设置为Off。 Option Explicit Off Option Strict Off Object变量可以用普通数据类型变量的格式定义,也可以默认定义。例如: Dim SomeValue As Object Dim SomeValue都可以把SomeValue定义为Object变量。 3. 变量的隐式声明 用Dim和Public等语句可以定义局部变量、模块级变量和全局变量。对于局部变量来说,当Option Explicit编译器开关为Off时,也可以不用Dim(或Static)定义,而在需要时直接给出变量名。 4.3.2 类型转换 q把值从一种数据类型变为另一种数据类型的操作称为

87、类型转换。q扩展转换和收缩转换 q隐式型转换和显式型转换 1. 扩展转换和收缩转换 q一种是源数据值转换后的结果在目标数据类型的范围内,称为扩展转换q另一种是源数据值转换后的结果超出了目标数据类型的范围 ,称为收缩转换2. 隐式转换与显式转换 隐式转换例如: Dim IVal As Integer Dim Dval As Double IVal = 638 Dval = IVal 显式转换通过以下类型转换函数来实现: CBool(expression) CByte(expression) CChar(expression) CDate(expression) CDbl(expression)

88、CDec(expression) CInt(expression) CLng(expression) CObj(expression) CShort(expression) CSng(expression) CStr(expression) 4.4 变量的作用域和生存期 n变量的作用域指的是变量的有效范围,即变量的“可见性”。定义了一个变量后,为了能正确地使用变量的值,应当明确可以在程序的什么地方访问该变量。变量的“生存期”指的是变量可供使用的时间周期,表示它可以保留值的时间周期。在生存期内,变量的值可以更改,但变量总是保留某些值。 4.4.1 变量的作用域 1.代码块级变量 Private

89、Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim a As Short = 100 过程级变量 If a = 100 Then Dim b As Integer 代码块级变量 b = a * a MsgBox(b) End If MsgBox(b) 此句出错 End Sub 在上面的程序中,变量b是代码块级变量,它的作用域是If . End If之内,如果在代码块外引用变量b,则会出错。 2. 过程级变量 在过程(事件过程或通用过程)

90、内声明的变量称为过程级变量,也称局部变量,可以用Dim或Static声明,其作用域是它所在的过程。 Private Sub Button1_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim Tempnum As Integer Static Total As Double . End Sub 在上面的过程中,定义了两个过程级变量,即整型变量Tempnum和双精度静态变量Total.3. 模块级变量 前面我们曾多次提到“模块”。在Visual Basic.NET中,模块通常

91、指的是一个类。 模块级变量可用于该模块内的所有过程。 4. 公用变量 公用变量也称全局变量,其作用域最大,可以在项目的每个模块、每个过程中使用。 4.4.2 变量的生存期 n每个变量都有其生存的周期,在这期间变量能够保持它的值。也就是说,变量的生存期代表了变量中能够存储值的时间段,在这个时间段中,变量值可能会被修改,但总是包含某个值。 l模块级变量和公有变量l过程级变量l代码级变量l静态变量4.5常用内部函数 nVisual Basic.NET提供了大量的内部函数。在这些函数中,有些是通用的,有些则与某种操作有关,大体上可分为五类,包括转换函数、数学函数、时间/日期函数和随机数函数以及字符串函

92、数。 n4.3节已介绍了部分转换函数,包括CBool、CByte、CChar、CDate、CDbl、CDec、CInt、CLng、CObj、CShort、CSng、CStr等。表4.8列出了Visual Basic.NET中常用的一些函数。 表4.8 部分Visual Basic.NET函数 类别 函 数 功 能 转换 Int(x) 求不大于自变量x的最大整数 Fix(x) 去掉一个浮点数的小数部分,保留其整数部分 Hex(x) 把一个十进制数转换为十六进制数 Oct(x) 把一个十进制数转换为八进制数 Asc(x$) 返回字符串x$中第一个字符的ASCII或DBCS码 Chr(x) 把x的值

93、转换为相应的ASCII或DBCS字符 Str(x) 把x的值转换为一个字符串 Val(x$) 把字符串x$转换为相应的数值 数学 Sin(x) 返回自变量x的正弦值 Cos(x) 返回自变量x的余弦值 Tan(x) 返回自变量x的正切值 Atn(x) 返回自变量x的反正切值 Abs(x) 返回自变量x的绝对值 Sign(x) 返回自变量x的符号,即: 当x为负数时,函数返回-1 当x为0时,函数返回0 当x为正数时,函数返回1 Sqrt(x) 返回自变量x的平方根,x必须大于或等于0 Exp(x) 返回以e为底、以x为指数的值,即求e的x次方 Pow(x, y) 求x的y次方 日期/时间 Da

94、y(Now) 返回当前的日期 WeekDay(Now) 返回当前的星期 Month(Now) 返回当前的月份 Year(Now) 返回当前的年份 Hour(Now) 返回小时(023) Minute(Now) 返回分钟(059) Second(Now) 返回秒(059) 随机数 Rnd(x) 产生一个01之间的单精度随机数 说明说明: (1)数学函数在命名空间System.Math中定义。为了使用上面表中列出的数学函数,必须在模块的开头加上下面的Imports语句: Imports System.Math(2)三角函数的自变量x是一个数值表达式。其中Sin、Cos和Tan的自变量是以弧度为单位

95、的角度,而Atn函数的自变量是正切值,它返回正切值为x的角度,以弧度为单位。在一般情况下,自变量以角度给出,可以用下面的公式转换为弧度:1度 = /180 = 3.14159/180(弧度)(3)日期和时间函数的自变量Now是一个内部变量,不需要用户定义。用它作自变量,可以用日期和时间函数返回当前系统的日期和时间。 (4)Chr 函数的参数x是一个Integer型值,其返回值为Char型。x的值一般为0到255;对于双字节字符集系统(DBCS),取值为-32768到32767。Asc函数返回一个 Integer 数据类型值,它是与字符串中第一个字符对应的字符代码。在非DBCS系统下,Asc函数

96、的返回值范围为0到255;而在DBCS系统下,则为-32768到32768。(5)用Rnd函数可以返回随机数,当一个应用程序不断地重复使用随机数时,同一序列的随机数会反复出现,用Randomize语句可以消除这种情况,其格式为: Randomize(x) 这里x是一个整型数,它是随机数发生器的“种子数”,可以省略。(6)为了检验每个函数的操作,可以使用Debug.WriteLine方法输出函数的值。格式如下: Debug.WriteLine(输出项) 【例4.1】编写程序,试验内部函数的操作。 在窗体上画一个按钮,然后编写如下程序: Imports System.Console Imports

97、 System.Math Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim N As Short Debug.WriteLine() Debug.WriteLine(输出 30 度角的正弦值:) Debug.WriteLine(Sin(30 * (3.14159 / 180) Debug.WriteLine(输出当前的日期/时间:) Debug.WriteLine(Now) Debug.WriteLine(输出当前的年

98、份:) Debug.WriteLine(Year(Now) Debug.WriteLine(输出5192342等值的十六进制数) Debug.WriteLine(&H & Hex(5192342) & 是字符串连接运算符 Debug.WriteLine(输出8的4次方) Debug.WriteLine(Pow(8, 4) Debug.WriteLine(输出3的平方根) Debug.WriteLine(Sqrt(3) Debug.WriteLine(输出46378等值的八进制数) Debug.WriteLine(&O & Oct(46378) Debug.WriteLine(输出5个随机数)

99、For N = 1 To 5 Debug.WriteLine(Rnd() Next Debug.WriteLine() End Sub字符处理能力n Visual Basic.NET具有十分丰富的,它提供了大量的字符串操作函数,这些函数大都可以带有以类型说明符$,表明函数的返回值为字符串。但是,在Visual Basic.NET中,函数尾部的$可以有,也可以省略,其功能相同。这样,同一个字符串函数可能会有两种形式。以Left函数为例,可以有以下两种形式:qLeft$(字符串, n)qLeft(字符串, n)n注意,只有部分字符串函数有以上两种形式,为了简化代码,通常可省略类型说明符“$”。在本

100、书的例子中,字符串函数一般都省略“$”。 表4.9列出了部分字符串函数的功能概要。表4.9字符串函数函数格式功能LTrim LTrim(字符串) 去掉字符串左边的空白字符RTrim RTrim(字符串) 去掉字符串右边的空白字符 Trim Trim(字符串) 去掉“字符串”两边的空白字符 Left Left(字符串,n) 取字符串左部的n个字符 Right Right(字符串,n) 取字符串右部的n个字符 Mid Mid(字符串,p,n) 从位置p开始取字符串的n个字符 Len Len(字符串) 测试字符串的长度 Space Space(n) 返回n个空格 InStr InStr(字符串1,字

101、符串2,) 在字符串1中查找字符串2 Ucase Ucase(字符串) 把小写字母转换为大写字母 Lcase Lcase(字符串) 把大写字母转换为小写字母 例如: a = Good Morning b = LTrim$(a) c = RTrim$(b) Mid(c, 4, 8) = AAAAA Debug.WriteLine(c)其结果为:GooAAAAAning4.6 运算符与表达式 n 运算(即操作)是对数据的加工。最基本的运算形式常常可以用一些简洁的符号来描述,这些符号称为运算符或操作符。被运算的对象,即数据,称为运算量或操作数。由运算符和运算量组成的表达式描述了对哪些数据、以何种顺序

102、进行什么样的操作。运算量可以是常量,也可以是变量,还可以是函数。例如:A+3, T+Sin(a), X=A+B, PI*r*r等都是表达式,单个变量或常量也可以看成是表达式。4.6.1 算术运算符 表4.11 Visual Basic.NET算术运算符 运算 运算符 表达式例子 指数 X Y 取负 - -X 乘法 * X * Y 浮点除法 / X / Y 整数除法 X Y 取模 Mod X Mod Y 加法 + X + Y 减法 - X - Y 连接 & x$ & y$ 4.6 2 复合运算符 q+= 自反加赋值运算符 q -= 自反减赋值q*= 自反乘赋值q/= 自反浮点除赋值q= 自反整除

103、赋值q= 自反指数赋值q&= 自反字符串连接赋值 例如: a = a + b 可缩写为 a += b a = a - b 可缩写为 a -= b a = a * b 可缩写为 a *= b a = a / b 可缩写为 a /= b a = a b 可缩写为 a = b a = a b 可缩写为 a = b a = a & b 可缩写为 a &= b 【例4.2】编写程序,试验自反赋值运算符的操作。 在窗体上画一个按钮,然后编写如下程序: Imports System.Console Private Sub Button1_Click(ByVal sender As System.Object

104、, _ ByVal e As System.EventArgs) Handles Button1.Click Dim a, b As Single a = 28 : b = 8 Debug.WriteLine(a = & a & b = & b) a += b Debug.WriteLine(a += b = & a) a = 28 : b = 8 a -= b Debug.WriteLine(a -= b = & a) a = 28 : b = 8 a *= b Debug.WriteLine(a *= b = & a) a = 28 : b = 8 a /= b Debug.WriteLi

105、ne(a /= b = & a) a = 28 : b = 8 a = b Debug.WriteLine(a = b = & a) End Sub4.6.3 关系运算符和逻辑运算符 表4.13 关系运算符 运算符 测试关系 表达式例子 = 相等 X=Y 或 不相等 XY或XY 小于 X 大于 XY = 小于或等于 X= 大于或等于 X=Y Like 比较样式 Is 比较对象变量 用关系运算符连接两个算术表达式所组成的式子叫做关系表达式。关系表达式的结果是一个Boolean类型的值,即True和False。 表4.14 逻辑运算真值表 X Y Not X X And Y X Or Y X Xo

106、r Y -1 -1 0 -1 -1 0 -1 0 0 0 -1 -1 0 -1 -1 0 -1 -1 0 0 -1 0 0 0 短路与:A AndAlso B AndAlso C 短路或:A OrElse B OrElse C 4.6.4 表达式的执行顺序 1.首先进行函数运算。2. 接着进行算术运算,其次序为: (1)指数() (2)取负(-) (3)乘、浮点除(*、/) (4)整除() (5)取模(Mod) (6)加、减(+、-) (7)连接(&)3. 然后进行关系运算(=、=、Like、Is)。4. 最后进行逻辑运算,顺序为: (1)Not (2)And (3)Or (4)Xor (5)

107、AndAlso (6)OrElseVisual Basic. NET 程序设计第5章数据输入输出 内容提要n数据输入InputBox函数nMsgBox函数和MsgBox语句nMessageBox. Show方法n控制台输入输出n在集成开发环境外建立控制台应用程序n数据的格式输出nVisual Basic.NET的输入输出有着十分丰富的内容和形式,它既可以通过控件来实现,也可以通过函数和语句来实现。这一章介绍Visual Basic.NET中用于输入输出的语句和函数,下一章介绍控件。 5.1 数据输入InputbBox函数 n用InputBox函数可以从键盘上输入数据。在运行期间,该函数可以产生

108、一个对话框,作为输入数据的界面,等待用户输入数据,并返回所输入的内容。 其格式为: InputBox(prompt,title,default,xpos,ypos 例如: Dim c1, msg, msg1, msg2, msg3 As String c1 = Chr(13) + Chr(10) msg1 = 输入你的名字: msg2 = 输入完毕后, msg3 = 按回车键或单击Ok按钮 msg = msg1 + c1 + msg2 + vbCrLf + msg3 InputBox(msg, 输入数据)【例5.1】编写程序,试验InputBox函数的功能。 Private Sub Form1

109、_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles MyBase.Click Dim c1, msg, msg1, msg2, msg3, Custname As String c1 = Chr(13) + Chr(10) msg1 = 输入雇客名字: msg2 = 输入后按回车键 msg3 = 或单击 Ok 按钮 msg = msg1 + c1 + msg2 + c1 + msg3 Custname = InputBox(msg, InputBox Function demo, 王大力) Debug.Wr

110、iteLine(Custname) End Sub使用InputBox函数时,应注意以下几点: q如果第三个参数(default)不省略,则在输入区中显示该参数的值,此时如果按回车键或单击对话框中的“确定”按钮,则输入该默认值,并可把它赋给一个变量;如果不想输入默认值,则可直接键入所需要的数据,然后按回车键或单击“Ok”按钮输入。qInputBox的返回值是一个字符串(不是Object类型)。 q编译器选项Option Strict,在默认情况下,该选项被设置为Off。Visual Basic. NET不检查函数的返回值类型,即不管接收数据的变量是什么类型,都不会产生错误。(见下页见下页) q

111、在输入区输入数据后,单击“Ok”按钮(或按回车键)表示确认,并返回在输入区中输入的数据;而如果单击“Cancel”按钮(或按Esc键),则使当前的输入作废,在这种情况下,将返回一个空字符串。 q每执行一次InputBox函数只能输入一个值,如果需要输入多个值,则必须多次调用InputBox函数。 不允许数据类型隐式转换 5.2 MsgBox函数和MsgBox语句 n在使用Windows时,如果操作有误,屏幕上会显示一个对话框,让用户进行选择,然后根据选择确定其后的操作。MsgBox函数的功能与此类似,它可以向用户传送信息,并可通过用户在对话框上的选择接收用户所做的响应,作为程序继续执行的依据。

112、 MsgBox函数的格式如下: MsgBox(msg,type,title) 5.2.1 MsgBox函数 表5.1type参数的取值(1) 枚举成员 值作用 OKOnly 0 只显示“确定” 按钮 OKCancel 1 显示“确定”及“取消”按钮 AbortRetryIgnore 2 显示 “终止”、“重试”及“忽略”按钮 YesNoCancel 3 显示“是”、“否”及“取消”按钮 YesNo 4 显示“是”及“否”按钮 RetryCancel 5 显示“重试”及“取消”按钮 Critical 16 显示 Critical Message 图标 Question 32 显示 Warning

113、 Query 图标 Exclamation 48 显示 Warning Message 图标 Information 64 显示 Information Message 图标 DefaultButton1 0 第一个按钮是默认值 DefaultButton2 256 第二个按钮是默认值 DefaultButton3 512 第三个按钮是默认值 ApplicationModal 0 应用程序强制返回;应用程序一直被挂起, 直到用户对消息框作出响应才继续工作 SystemModal 4096 系统强制返回;全部应用程序都被挂起, 直到用户对消息框作出响应才继续工作 type参数的取值举例例如:16

114、=0+16+0 显示“确定”按钮、“暂停”图标,默认按钮为“确定”35=3+32+0 显示“是”、“否”、“取消”三个按钮(3), “?”图标(32),默认活动按钮为“是”(0)50=2+48+0 显示“终止”、“重试”、“忽略”三个按钮(2),“!”图标 (48),默认活动按钮为“终止”(0) type参数的取值(2) 枚举成员 值作用 MsgBoxSetForeground 65536 指定消息框窗口作为前景窗口 MsgBoxRight 524288 文本为右对齐 MsgBoxRtlReading 1048576 指定文本应为在希伯来和阿拉伯语系统 中的从右到左显示 MsgBox函数的返回

115、值 表5.3MsgBox函数的返回值返回值操作 系统常量1 选“确定”按钮 vbOk2 选“取消”按钮 vbCancel3 选“终止”按钮 vbAbort4 选“重试”按钮 vbRetry5 选“忽略”按钮 vbIgnore6 选“是”按钮 vbYes7 选“否”按钮 vbNo 【例5.3】编写程序,试验MsgBox函数的功能。 Private Sub Form2_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles MyBase.Click Dim msg1, msg2 As String msg1 = Ar

116、e you continue to? msg2 = Operation Dialog Box r = MsgBox(msg1, 34, msg2) MsgBox(r) End Sub【例5.4】编写程序,用MsgBox函数判断是否继续执行。Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Click Dim msg, title As String Dim x As Short msg = 请确认此数据是否正确 title = 数据检查对话框 x = MsgBo

117、x(msg, 19, title) If x = 6 Then MsgBox(x * x) ElseIf x = 7 Then MsgBox(请重新输入) End IfEnd Sub或或 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim msg, title As String Dim x As Short msg = 请确认此数据是否正确 title = 数据检查对话框 x = MsgBox(msg, MsgBoxSty

118、le.YesNoCancel Or _ MsgBoxStyle.Critical Or _ MsgBoxStyle.DefaultButton1, title) If x = vbYes Then MsgBox(x * x) ElseIf x = vbNo Then MsgBox(请重新输入) End If End Sub 5.2.2 MsgBox语句 nMsgBox的返回值通常用来作为继续执行程序的依据,根据该返回值决定其后的操作。在这种情况下,MsgBox是作为函数使用的。如果不需要返回值,只是显示适当的提示信息,则MsgBox函数也可以写成语句形式 。格式如下: MsgBox(Msg$,

119、type%,title$各参数的含义及作用与MsgBox函数相同,由于MsgBox语句没有返回值,因而常用于较简单的信息显示。例如: MsgBox(请重新输入, , ) 5.3 MessageBox.Show方法 nMessageBox.Show方法用来显示一个信息框,功能与MsgBox类似,但用法更灵活。 一般格式为: MessageBox.Show(text, caption, buttons, icon)Buttons、icon参数的取值 表5.4buttons参数的取值 值 作 用 AbortRetryIgnore 显示 “终止”、“重试”及“忽略”按钮 OK 显示“确定”按钮 OKC

120、ancel 显示“确定”和“取消”按钮 RetryCancel 显示“重试”和“取消”按钮 YesNo 显示“是”和“否”按钮 YesNoCancel 显示“是”、“否”和“取消”按钮表5.5icon参数的取值 值 显 示 图 标 Asterisk 圆中有一个小写字母“i” Error 红色背景圆中有一个“X” Exclamation 黄色背景的三角形中有一个惊叹号“!” Hand 红色背景的圆中有一个白色“X” Information 圆中有一个小写字母“i” None 无图标 Question 在圆中有一个问号“?” Stop 红色背景圆中有一个白色“X” Warning 黄色背景的三角形

121、中有一个惊叹号“!” 如: MessageBoxButtons.OK, MessageBoxIcon.Exclamation【例5.5】编写程序,试验Messagebox.Show方法的操作。 在窗体上画一个按钮,然后编写如下代码: Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button2.Click Dim msg1, msg2 As String Dim r As Integer Dim cl As String = Chr(13) & Ch

122、r(10) msg1 = 是否继续? & cl & 如果继续,请单击是 msg1 = msg1 & cl & 否则单击否 msg2 = Operation Dialog Box r = MessageBox.Show(msg1, msg2, MessageBoxButtons.YesNoCancel, _ MessageBoxIcon.Question) MsgBox(r) End Sub【例5.6】编写程序,用Messagebox.Show方法判断程序是否继续执行。 在窗体上画一个按钮,然后编写如下程序: Private Sub Button1_Click(ByVal sender As S

123、ystem.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim S As String Dim msg, msg1, title, title1 As String Dim x As Integer msg = 必须输入名字 title = 名字输入错误 msg1 = 是否继续? title1 = 判断 S = InputBox(请输入你的名字, 输入) If S = Then MessageBox.Show(msg, title, _ MessageBoxButtons.OK, MessageBoxIcon.Exc

124、lamation) End If x = MessageBox.Show(msg1, title1, MessageBoxButtons.YesNo) If x = 6 Then MsgBox(请重新输入) Else End End If End Sub5.4 控制台输入输出 n 控制台输入输出也称为标准输入输出(stdio),使用的是标准输入输出设备,即键盘和显示器。此外,由于数据的输入输出是以字符流的方式进行的,因此也称为流式输入输出。在这一节中,我们将介绍Visual Basic.NET中控制台输入输出的方法以及如何实现。 5.4.1 控制台输入输出方法 在Visual Basic.NE

125、T中,控制台输入输出通过以下几个方法来实现: Read ReadLine Write WriteLine 从方法的名字不难看出,前两个方法用于输入,而后两个方法用于输出。Read方法 Read方法用来从标准输入流(键盘)读取一个字符,其格式为: 变量 = Read() 这里的“变量”是Read方法的返回值,其类型为Integer,它是所输入的字符的代码,对于从键盘上输入的字符来说,它实际上是该字符的ASCII码。例如: i = Read()执行该语句后,系统等待键盘输入,假定从键盘上输入一个字符“A”并按回车键,则把返回值赋给变量i,它是该字符的ASCII码,即65。 在执行Read方法时,输

126、入字符后不会立即返回,只有在按下回车键后才能返回。如果在输入多个字符之后按回车键,则返回第一个字符的ASCII码。ReadLine方法 ReadLine方法从键盘上读取一行字符,其格式为: 变量 = ReadLine() 其中“变量”是ReadLine方法的返回值,其类型为String。执行该方法后,系统等待键盘输入,输入一个字符串并按回车键后,将把输入的一行字符(即一个字符串)赋给“变量”。 用ReadLine方法可以从键盘上输入一个字符行。字符行的定义是:一个由回车/换行结束的字符序列,所输入的字符行不包括回车/换行符。例如: S = ReadLine()执行该语句后,假定从键盘上输入“A

127、BCD”并按回车键,则把字符串“ABCD”赋给变量S,在字符串变量S中不包括回车符。Write方法 Write方法用来把指定的信息写到标准输出流。一般格式为: Write(表达式) 这里的“表达式”可以是数值表达式,也可以是字符串表达式。对于数值表达式,Write方法将在显示器上输出表达式的值,而字符串则照原样输出。 Write(请输入你的名字) 将在屏幕上输出字符串“请输入你的名字” Write(1738) 将输出一个常数。 Write方法兼有计算与输出双重功能,对于表达式,它先计算后输出。例如: Dim a, b As Integer a = 30 : b = 40 Write(a + b

128、 = ) Write(a + b)其输出结果为:a + b = 70。WriteLine方法 WriteLine方法把后面跟有当前行终止符的指定数据写到标准输出流,一般格式如下: WriteLine(表达式) WriteLine方法与Write方法功能基本相同,其主要区别是,WriteLine方法在输出数据后换行,而Write方法在输出数据后不换行。例如: Dim a, b As Integer a = 30 : b = 40 WriteLine(a + b = ) WriteLine(a + b) WriteLine(3352)输出结果为: a + b = 70 33525.4.2 控制台应

129、用程序的建立和执行n控制台应用程序是Visual Basic.NET中的一种项目类型。 n控制台应用程序是一种后台运行的不可见应用程序。q1. 建立控制台应用程序q2. 执行控制台应用程序1. 建立控制台应用程序 控制台应用程序模板 例如:Module Module1 Sub Main() Dim S As String Console.Write(请输入一个字符串:) S = Console.ReadLine() Console.Write(你输入的字符串是:) Console.WriteLine(S) End SubEnd Module 控制台输入输出方法的命名空间为System.Cons

130、ole,因此,如果加上Imports语句,则代码可以简化为: Imports System.ConsoleModule Module1 Sub Main() Dim S As String Write(请输入一个字符串:) S = ReadLine() Write(你输入的字符串是:) WriteLine(S) End SubEnd Module声明命名空间声明命名空间2. 执行控制台应用程序 n控制台应用程序在控制台窗口中执行和输出结果,在执行之前,必须对应用程序进行编译,生成可执行文件(.exe)。可以通过两种方式编译控制台应用程序。q第一种方式第一种方式与编译Windows应用程序的操作

131、相同,即在集成环境中执行“生成”菜单中的“生成”命令,或者执行“调试”菜单中的“启动”命令(或者按F5、单击工具栏上的“启动”按钮)。在前一种情况下(即执行“生成”命令),只生成可执行文件(.exe),在后一种情况下,生成可执行文件后立即执行。q第二种方式第二种方式在控制台窗口中通过命令行方式实现。在Windows环境下执行“开始/程序/Microsoft Visual Studio.NET/Visual Studio.NET工具/Visual Studio.Net命令提示”命令,即可打开控制台窗口。 【例5.7】编写控制台应用程序,并在控制台窗口中编译和执行。 (1)建立一个控制台应用程序(

132、2)编写如下代码:Imports System.ConsoleModule Module1 Sub Main() Dim Name, Sex, Addr As String Dim Age As Short Write(请输入姓名:) Name = ReadLine() Write(请输入性别:) Sex = ReadLine() Write(请输入年龄:) Age = ReadLine() Write(请输入家庭住址:) Addr = ReadLine() WriteLine() WriteLine(Name & 通信录:) WriteLine() Write(姓名: & Name & ,性

133、别:_ & Sex & , & 年龄:) Write(Age) WriteLine(,家庭住址: & Addr) End SubEnd Module 5.5 在集成环境外建立控制台应用程序 n前一节介绍了如何在Visual Basic.NET集成环境下建立和执行控制台应用程序。实际上,由于控制台应用程序是在DOS环境下执行的,因此也可以在Visual Basic.NET集成开发环境外建立。这一节将通过一个例子说明如何脱离开Visual Basic.NET环境建立和运行控制台应用程序。 5.5.1 Visual Basic.NET编译器 nVisual Basic.NET提供了一个编译器,名为v

134、bc.exe,可以在控制台窗口中使用。该编译器有多个选项(也称命令行参数或开关),在控制台窗口中输入vbc或vbc.exe,然后按回车键,即可列出这些选项,如图5.19所示。Visual Basic.NET编译器 编译器编译器在控制台窗口中通过命令行方式使用,一般格式为: vbc 选项表选项表 源程序文件源程序文件 这里的“选项表”是编译器选项,可以有一个或多个,每个选项以“/”开头,各选项之间用空格分开。“源程序文件”是要编译的源程序文件名,可以用任何文本编辑软件(如“记事本”)编辑,存盘时文件的扩展名为.vb。 编译器选项多达几十个,因此,用命令行方式编译时,比集成环境下编译需要更多的技巧

135、。限于篇幅,这里不能对所有选项进行详细介绍,下面介绍几个常用的选项。编译器常用选项 1. /out选项选项 格式:/out: 功能:用来指定编译后生成的输出文件名,一般只给出文件的基本名,不必给出扩展名,其扩展名由/target选项确定。如果省略该选项,则生成的输出文件基本名与源程序文件的基本名相同。2. /target选项选项 格式:/target: 功能:指定要建立的目标文件的类型,有以下几种: /target:exe 建立控制台应用程序(默认) /target:winexe 建立Windows应用程序 /target:library 建立库程序集 /target:module 建立可添加

136、到程序集的模块 选项/target可以缩写为/t,例如/target:exe可以缩写为/t:exe。3. /reference选项选项 格式:/reference: 功能:从指定的程序集中引用元数据。在编译过程中,可能需要引用一些数据,这些数据来自指定的程序集,一般为动态链接库(.dll),可以指定一个或多个。在命令行中,选项/ reference可以缩写为/r。例如: /r:system.dll编译器举例下面举一个例子(假定源程序文件名为source.vb) vbc /t:exe /out:xFile /r:system.dll source.vb 该例对源程序文件source.vb进行编译

137、,生成的目标文件类型为.exe,输出文件名为xFile.exe,在编译过程中引用system.dll程序中的元数据。 由于控制台应用程序的目标文件(.exe)是默认值,因此可以省略/t:exe,即: vbc /out:xFile /r:system.dll source.vb 实际上,在一般情况下,system.dll的显式引用也不是必需的。另外,如果不想指定输出文件名,也可以省略/out选项,在这种情况下,输出文件名与源程序文件名相同,因此,命令行可以简化为: vbc source.vb5.5.2 程序举例 【例5.8】编写程序,在控制台窗口中输出下面的文字,其中标题和作者名从键盘上输入,其

138、余文字直接输出。 Imports System.ConsoleModule Module1 Sub Main() Dim Title, Name As String Write(请输入标题:) Title = ReadLine() Write(请输入作者姓名:) Name = ReadLine() WriteLine() WriteLine( & Title) WriteLine( & Name) WriteLine() WriteLine( 枯藤老树昏鸦,) WriteLine( 小桥流水人家,) WriteLine( 古道西风瘦马。) WriteLine( 夕阳西下,) WriteLine

139、( 断肠人在天涯。) End SubEnd Module输入命令行输入命令行:vbc /t:exe /out:Contest /r:system.dll Contest2.vb 5.6 数值的格式输出 Visual Basic.NET提供了一个格式输出函数Format,利用该函数,可以使数值或日期按指定的格式输出。当用于数值时,其格式为:Format(数值表达式,格式字符串数值表达式,格式字符串)Format函数的功能是:按“格式字符串”指定的格式输出“数值表达式”的值。如果省略“格式字符串”,则Format函数的功能与Str函数类似。注意,该函数的返回值是一个字符串,也就是说,用该函数输出的

140、表示成字符串的数值,而不是数值类型。用Format函数可以使数值按“格式字符串”指定的格式输出,包括在输出字符串前加$、字符串前或后补充0及加千位分隔逗点等。“格式字符串”是一个字符串常量或变量,它由专门的格式说明字符(见表5.6)组成,由这些字符决定数据项的显示格式,并指定显示区段的长度。当格式字符串为常量时,必须放在双引号中。表5.6格式说明字符字符 作用# 数字;不在前面或后面补0 数字;在前面或后面补. 小数点, 千位分隔逗点% 百分比符号$ 美元符号- + 负、正号 E+ E- 指数符号(1)#表示一个数字位。#的个数决定了显示区段的长度。如果要显示的数值的位数小于格式字符串指定的区

141、段长度,则该数值靠区段的左端显示,多余的位不补0。如果要显示的数值的位数大于指定的区段长度,则数值照原样显示。(2)0与#功能相同,只是多余的位以0补齐。例如: Format(25634,00000000) 返回值为 00025634 Format(25634,#) 返回值为 25634 Format(25634,#) 返回值为 25634(3).显示小数点。小数点与#或0结合使用,可以放在显示区段的任何位置。根据格式字符串的位置,小数部分多余的数字按四舍五入处理。例如: Format(850.72,#.#) 返回值为 850.72 Format(7.876,000.00) 返回值为 007.

142、88(4),逗号。在格式字符串中插入逗号,起到“分位”的作用,即从小数点左边一位开始,每3位用一个逗号分开。逗号可以放在小数点左边的任何位置(不要放在头部,也不要紧靠小数点),例如: Format(12345.67,#,#.#) (正确) 返回值为 12,345.67 Format(12345.67,#,#.#) (正确) 返回值为 12,345.67 Format(12345.67,#.#) (错误) 返回值为 ,12345.67 Format(12345.67,#,.#) (错误) 返回值为 12.35从上面的例子可以看出,逗号可以放在格式字符中小数点左边除头部和尾部的任何位置。如果放在头

143、部或尾部,则不能得到正确的结果。(5)%百分号。通常放在格式字符串的尾部,用来输出百分号。例如: Format(.257,00.0%) 返回值为 25.7%(6)$美元符号。通常作为格式字符串的起始字符,在所显示的数值前加上一个“$”。例如: Format(348.2,$#0.00) 返回值为 $348.20(7)+正号。使显示的正数带上符号,“+”通常放在格式字符串的头部。(8)-负号。用来显示负数。例如: Format(348.52,-#0.00) 返回值为 -348.52 Format(348.52,+#0.00) 返回值为 +348.52 Format(-348.52,-#0.00)

144、返回值为 -348.52 Format(-348.52,+#0.00) 返回值为 -+348.52从上面的例子可以看出,“+”和“-”在所要显示的数值前面强加上一个正号或负号。(9)E+(E-)用指数形式显示数值。两者作用基本相同。例如: Format(3485.52,0.00E+00) 返回值为 3.49E+03 Format(3485.52,0.00E-00) 返回值为 3.49E03 Format(0.0348552,0.00E+00) 返回值为 3.49E-02 Format(0.0348552,0.00E-00) 返回值为 3.49E-02【例5.9】编写程序,在控制台窗口试验For

145、mat函数的功能。Imports System.ConsoleModule Module1 Sub Main() WriteLine(Format(12345.6, 000,000.00) WriteLine(Format(12345.678, #,#.#) WriteLine(Format(12345.6, #,#0.00) WriteLine(Format(12345.6, $#,#0.00) WriteLine(Format(12345.6, -#,#0.00) WriteLine(Format(0.123, 0.00%) WriteLine(Format(12345.6, 0.00E+00) WriteLine(Format(0.1234567, 0.00E-00) WriteLine(Format(0.1234567) End SubEnd Module

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号