Visual Basic实例精通
上QQ阅读APP看书,第一时间看更新

第一篇 基础知识篇

第1章 VB语言基础

阅读本书的前提是读者有一定的VB基础,因此对于VB的集成开发环境和VB的编程基础,尤其是创建一个VB应用程序的步骤不再介绍。本书从VB的语言基础开始,通过小实例讲解VB中的相关知识。本章主要介绍VB的语言基础,即VB编程过程中最简单的知识,同时也是最重要的知识,更是编程过程中最容易被编程者忽略和出错的知识点。因此读者应该重视这部分的介绍。

1.1 标识符

标识符,顾名思义,是标识某个对象的符号,这个对象可以是变量、常量、过程和函数等。在VB中,标识符的定义有一定的规则,并且有一些标识符是VB中保留下来作为关键字使用的,因此在定义标识符时,要避免使用这些保留字。下面通过一系列小实例来说明标识符的定义规则和保留字的运用。

技术要点

在本实例中主要用到了 Form_ Load()事件,标识符定义整型变量。保留字,文本框TextBox控件数组和For循环语句,主要功能和用法如下:

● Form_ Load()事件,加载窗体时会触发这个事件。双击对象窗口中的窗体时,如果该事件已经在代码窗口中创建,光标就会停留在该事件代码段的开始位置;否则会创建该事件。

●运用标识符定义整型变量,即遵守标识符的命名规则,定义一个变量来表示某种含义。在本实例中,定义的变量i用来表示循环参数。

●保留字,也称作关键字,是VB中保留下来的标识符,用来表示固定的含义。在本实例中用到的保留字有Private、As、For、To、Next等。

●文本框控件TextBox,主要用来显示文本信息。显示文本信息主要通过控件的Text属性进行。

控件数组和For循环语句的功能和用法在后面的学习中详细介绍。

实现代码

        Private Sub Form_Load()
            Dim i As Integer                        '定义整型变量,作为循环变量
            For i = 0 To 7                          'For循环语句
                TxtWelcome(i).Visible = True     '使得TxtWelcome控件数组可见
            Next i
            TxtWelcome(0).Text = "欢"          '给TxtWelcome控件数组赋值为"欢"
            TxtWelcome(1).Text = "迎"          '给TxtWelcome控件数组赋值为"迎"
            TxtWelcome(2).Text = "进"          '给TxtWelcome控件数组赋值为"进"
            TxtWelcome(3).Text = "入"          '给TxtWelcome控件数组赋值为"入"
            TxtWelcome(4).Text = "VB"          '给TxtWelcome控件数组赋值为" VB "
            TxtWelcome(5).Text = "世"          '给TxtWelcome控件数组赋值为"世"
            TxtWelcome(6).Text = "界"          '给TxtWelcome控件数组赋值为"界"
            TxtWelcome(7).Text = "!"          '给TxtWelcome控件数组赋值为"!"
        End Sub

单击工具栏中的保存按钮,保存工程,然后,单击工具栏中的启动按钮,运行工程,程序运行结果如图1.1所示。

图1.1 程序运行界面图

单击工具栏中的结束按钮,或者单击运行窗口的关闭按钮,结束程序的运行。

源程序解读

(1)在代码中只有Form_ Load()事件,在该事件中,首先定义整型变量i,用来控制For循环语句的执行。这里循环变量的定义要遵循标识符的命名规则:必须以字母开头的字母、数字或下画线的组合,长度不能超过255 个字符,并且不能和 VB 中的保留字重名。

(2)如果违反了以上规定,那么在代码窗口会出现提示窗口。例如,当把i的命名变为_ i时,就会出现如图1.2所示的提示窗口。如果把i的命名变为2i,就会出现如图1.3所示的提示窗口。如果把i的命名变为As,就会出现如图1.4所示的提示窗口。如果把i的命名改为其他的保留字,如For或Private,也会出现如图1.3所示的提示窗口。定义变量i时用到了保留字As,VB中除了本实例中运用的保留字外,还有其他很多保留字,这里不再一一列举。

图1.2 以下画线开头命名标识符时出现的提示窗口

图1.3 以数字开头命名标识符时出现的提示窗口

图1.4 以保留字As命名标识符时出现的提示窗口

(3)运用For循环语句,设置“TextBox”文本控件数组的Visible属性为True,使文本框可见。最后对文本框控件数组的Text属性赋值,分别为“欢”、“迎”、“进”、“入”、“VB”、“世”、“界”、“!”。

(4)运用End Sub语句关闭当前过程。

1.2 数据类型

上一节介绍了标识符,了解了标识符的命名规则和VB中的保留字,对于保留字,希望读者在运用的过程中自己掌握。同时在上一节中,使用标识符定义整型变量,这里的“整型”就是数据类型。定义变量时,必须有一定的数据类型与之对应。本节主要介绍数据类型,通过实例的介绍使读者掌握各种数据类型的运用。

技术要点

本节主要运用的技术有组合框控件ComboBox及其AddItem方法和Click事件、标签Label控件、文本框 TextBox 控件、Select Case 语句、数据类型转换函数。主要功能和用法如下:

●组合框控件ComboBox,主要用于从多种对象中逐个地选择其中的一种对象。通常与Select Case语句配合使用,并且 Select Case语句出现在 ComboBox_ Click()事件中。

● AddItem方法,主要向组合框控件中添加各项,即各个对象。

●组合框控件ComboBox的Click事件,单击组合框时,触发该事件,主要完成选中某项时要完成的某种功能。

●标签Label控件,主要用于显示文本。一般通过其Caption属性显示出来。

●文本框TextBox控件在前面已经介绍过。

● Select Case语句在后面详细介绍。

●数据类型转换函数,主要用来在各数据类型之间相互转换。本实例中运用的转换函数有:CBool、CByte、CDate、CDbl、CInt、CLng和CStr,这些运用转换函数的转换方式都是显示转换。

说明:其他几种类型的数据也有对应的数据类型转换函数,如 CCur转换为货币型, CVar转换为可变型,CVErr转换为Error类型,但是这些转换函数只适用于VB7.0以下的版本。

实现代码

        Private Sub CmbNumType_Click()
            Dim i As Single                                             '定义单精度变量i
            i = 3.1415                                                 '给变量i赋值为3.1415
            Select Case CmbNumType.ListIndex                            'Select Case语句
                Case 0
                  TxtShow.Text = CInt(i)                             '显示整型数据
                  LabType.Caption = "数据类型为:" & "Integer"     '显示类型
                Case 1
                  TxtShow.Text = CLng(i)                             '显示长整型数据
                  LabType.Caption = "数据类型为:" & "Long"        '显示类型
                Case 2
                  TxtShow.Text = I                                     '显示单精度浮点型数据
                  LabType.Caption = "数据类型为:" & "Single"      '显示类型
                Case 3
                  TxtShow.Text = CDbl(i)                             '显示双精度浮点型数据
                  LabType.Caption = "数据类型为:" & "Double"      '显示类型
                Case 4
                  TxtShow.Text = CByte(i)                            '显示字节型数据
                  LabType.Caption = "数据类型为:" & "Byte"        '显示类型
                Case 5
                  TxtShow.Text = CStr(i)                             '显示字符型数据
                  LabType.Caption = "数据类型为:" & "String"      '显示类型
                Case 6
                  TxtShow.Text = CBool(i)                            '显示布尔型数据
                  LabType.Caption = "数据类型为:" & "Boolean"     '显示类型
                Case 7
                  TxtShow.Text = CDate(i)                            '显示日期型数据
                  LabType.Caption = "数据类型为:" & "Date"        '显示类型
            End Select
        End Sub
        '初始化,给"CmbNumType"组合框赋值
        Private Sub Form_Load()
            CmbNumType.AddItem "整型"                 '给"CmbNumType"组合框添加"整型"项
            CmbNumType.AddItem "长整型"               '给"CmbNumType"组合框添加"长整型"项
            CmbNumType.AddItem "单精度浮点型"         '给"CmbNumType"组合框添加"单精度浮点型"项
            CmbNumType.AddItem "双精度浮点型"         '给"CmbNumType"组合框添加"双精度浮点型"项
            CmbNumType.AddItem "字节型"               '给"CmbNumType"组合框添加"字节型"项
            CmbNumType.AddItem "字符型"               '给"CmbNumType"组合框添加"字符型"项
            CmbNumType.AddItem "布尔型"               '给"CmbNumType"组合框添加"布尔型"项
            CmbNumType.AddItem "日期型"               '给"CmbNumType"组合框添加"日期型"项
        End Sub

按Ctrl+S快捷键保存工程,然后按F5键运行工程。当选择组合框中的“整型”选项时,运行结果如图1.5所示。当选择组合框中的“字符型”选项时,运行结果如图1.6所示。当选择组合框中的“布尔型”选项时,运行结果如图1.7所示。当选择组合框中的“日期型”选项时,运行结果如图1.8所示。

图1.5 数据类型为整型的运行图

图1.6 数据类型为字符型的运行图

图1.7 数据类型为布尔型的运行图

图1.8 数据类型为日期型的运行图

源代码解读

(1)代码在Form_ Load()事件中运用组合框的AddItem方法初始化组合框控件。添加数据类型分别为“整型”、“长整型”、“单精度浮点数”、“双精度浮点数”、“字节型”、“字符型”、“布尔型”和“日期型”。除此之外,数据类型还有货币型(Currency)、可变型(Variant)和对象型(Object),这几种类型在编程过程中不常用,所以只作为了解。

(2)当单击“CmbNumType”组合框时,就触发CmbNumType_ Click()事件。在该事件中完成的操作主要是根据选择的数据类型显示最终的数据和所选择的数据类型。主要通过Select Case语句,根据 CmbNumType的 ListIndex属性确定选择的数据类型。然后运用“TxtShow”文本框显示该数据类型下的数据,并通过“LabType”标签显示所选择的数据类型。

1.3 常量和变量

上一节中介绍了数据类型的种类和各数据类型之间的转换函数,读者可以对数据类型有更深入的认识。数据类型的选择通常与常量和变量紧密相连,定义一个常量,要知道该常量的数据类型;同样,定义变量的同时,要赋予该变量数据类型。本节来介绍一下常量和变量的有关知识。

技术要点

本节使用的主要技术是常量和变量的定义,主要用法如下:

●常量的定义分为系统内部定义和用户定义两种。系统内部定义的常量是由VB和控件提供的,在代码中可以直接使用;在编程过程中应该注意的是定义常量。

●变量的定义,也称作变量的声明,在使用一个变量之前必须提前声明变量,变量的定义根据变量的类型进行定义,即不同的使用范围声明方式也不同。

用户定义常量使用Const语句来实现,其主要语法为:

        [Public|Private]Const 常量名[As数据类型]=表达式

其中,Public和Private参数注明常量的适用范围,Public表示常量为全局的,Private表示变量为局部的,这两个参数都是可选的;“常量名”参数就是给常量命名,命名规则与标识符的命名规则一样;“数据类型”表示常量的数据类型,一般可以省略,这时由后面的“表达式”参数来指明常量的数据类型。表达式可以是数值型常量、字符型常量、布尔型常量和日期型常量,也可以是由这几种常量连同运算符组成的表达式。

变量的种类有普通局部变量、静态局部变量、模块变量和全局变量。这些变量的主要声明语法分别如下:

        Dim 变量名[As数据类型名]
        Static变量名[As数据类型名]
        Private变量名[As数据类型名]
        Public变量名[As数据类型名]

说明:这四种声明方式中,最常用的声明方式是第一种。当变量声明为全局变量时,要注意变量名的命名应尽量长,最好具有一定的意义,防止变量的重复声明,造成冲突。

实现代码

        Const t = 2                                         '定义常量t作为第一个操作数
        Private Sub Form_Load()
        Dim i As Single                                      '定义变量i,作为第二个操作数
        i = 1.56                                            '给变量赋值
        TxtOne.Text = t                                     '由文本框获得第一个操作数
        TxtTwo.Text = I                                     '由文本框获得第二个操作数
        TxtResult.Text = TxtOne.Text * TxtTwo.Text           '计算结果,并用文本框显示出来
        End Sub

保存工程并运行工程。单击启动按钮后,程序的运行结果如图1.9所示。

图1.9 程序运行结果图

源代码解读

(1)首先定义常量t并赋值为2,这样常量默认为整型。给常量赋值之后,在后面代码中就不能再重新赋值,否则运行工程时,会出现如图1.10所示的提示窗口。

图1.10 重复给常量赋值出现的提示框

(2)在Form_ Load()事件中,首先定义变量i,然后给变量i赋值。这里给i赋值之后可以在后面的代码中再次给i赋值,但是文本框获得的是变量i的最终赋值。例如,在语句i=1.56后,再添加语句i=1.6,那么运行结果如图1.11所示。

图1.11 再次给变量定义时出现的界面图

(3)由文本框获得两个操作数之后,就可以计算两个操作数的乘积,最终结果由TxtResult控件显示出来。

说明:这里的结果为单精度浮点数,出现了数据类型的隐式转换,当一个整型量和一个单精度浮点数进行运算时,整型自动转变为单精度浮点数参与运算,结果也是单精度浮点数。

1.4 运算符

在上一节中介绍了常量和变量的定义与应用,其中需要读者了解的内容除了常量和变量的命名规则之外,还要注意常量和变量的适用范围,这样才能在定义变量和常量时做到有的放矢。另外,在上一节实例中提到了两个操作数的乘积,这里的乘法就是一种运算符。在VB中,运算符有多种类型,本节就详细介绍几种运算符的运用实例,即运用多种运算符进行相应表达式的计算。

技术要点

本节使用的主要技术是运算符的使用。运算符主要运用在表达式中,代表某种运算功能的符号。使用运算符之前,首先应该清楚运算符的分类,运算符大致可以分为四种:赋值运算符、数学运算符、关系运算符和逻辑运算符。其中最常用的是赋值运算符“=”,其主要语法为:

        变量=值

其中,变量就是声明过的常量或变量名,值就是对前面变量的赋值。

●数学运算符主要是为了进行数学运算,在本实例中用到的数学运算符有“加法运算符+”、“乘法运算符*”、“除法运算符/”、“整除运算符 \”、“求模运算符 Mod”,除此之外,数学运算符还有“减法运算符-”、“指数运算符^”、“连接字符串运算符&”。

●关系运算符主要用来确定两个表达式之间的关系。在本实例中用到的关系运算符有“相等运算符=”、“大于运算符>”,除此之外,关系运算符还有“不等于运算符<>”、“小于运算符<”、“大于等于运算符> =”、“小于等于运算符< =”、“字符串模式匹配运算符Like”、“对象一致比较运算符Is”。

●逻辑运算符主要用于判断表达式之间的逻辑关系,表达式可以为一个、两个或多个。在本实例中用到的逻辑运算符是“或运算符Or”,除此之外,逻辑运算符还有“取反运算符Not”、“与运算符And”、“异或运算符Xor”、“等价运算符Eqv”、“蕴含运算符Imp”。

说明:运用这些运算符时要注意运算符之间的优先关系。

实现代码

        Const x = 20                                                       '定义常量x作为第一个操作数
        Const y = 3                                                        '定义常量y作为第二个操作数
        Private Sub CmbYSF_Click()
        Text1.Text = x                                                     '获得第一个操作数
        Text2.Text = y                                                     '获得第二个操作数
        Select Case CmbYSF.ListIndex
        Case 0                                                              '加法的情况
        TxtResult.Text = CInt(Text1.Text)+ CInt(Text2.Text)            '加法运算表达式
        Label1.Caption = " +"                                            '在表达式中显示运算符
        LabShow.Caption = "加法运算符"                                   '显示选中的运算符
        Case 1                                                              '乘法的情况
        TxtResult.Text = Text1.Text * Text2.Text                            '乘法运算表达式
        Label1.Caption = "*"                                             '在表达式中显示运算符
        LabShow.Caption = "乘法运算符"                                   '显示选中的运算符
        Case 2                                                              '除法的情况
        TxtResult.Text = Text1.Text/Text2.Text                             '除法运算表达式
        Label1.Caption = "/"                                             '在表达式中显示运算符
        LabShow.Caption = "除法运算符"                                   '显示选中的运算符
        Case 3                                                              '整除的情况
        TxtResult.Text = Text1.Text \ Text2.Text                           '整除运算表达式
        Label1.Caption = "\"                                             '在表达式中显示运算符
        LabShow.Caption = "整除运算符"                                   '显示选中的运算符
        Case 4                                                              '求模的情况
        TxtResult.Text = Text1.Text Mod Text2.Text                         '求模运算表达式
        Label1.Caption = "Mod"                                           '在表达式中显示运算符
        LabShow.Caption = "求模运算符"                                   '显示选中的运算符
        Case 5                                                              '相等的情况
        TxtResult.Text = CInt(Text1.Text)= CInt(Text2.Text)            '相等运算表达式
        Label1.Caption = " ="                                            '在表达式中显示运算符
        LabShow.Caption = "相等运算符"                                   '显示选中的运算符
        Case 6                                                              '大于的情况
        TxtResult.Text = CInt(Text1.Text)> CInt(Text2.Text)           '大于运算表达式
        Label1.Caption =" >"                                            '在表达式中显示运算符
        LabShow.Caption = "大于运算符"                                   '显示选中的运算符
        Case 7                                                              '或运算的情况
        TxtResult.Text = Text1.Text Or Text2.Text                          '或运算表达式
        Label1.Caption = "Or"                                          '在表达式中显示运算符
        LabShow.Caption = "或运算符"                                   '显示选中的运算符
        End Select
        End Sub
        '初始化给组合框中添加运算符
        Private Sub Form_Load()
            CmbYSF.AddItem " +"                                        '添加加法运算符
            CmbYSF.AddItem "*"                                         '添加乘法运算符
            CmbYSF.AddItem "/"                                         '添加除法运算符
            CmbYSF.AddItem "\"                                         '添加整除运算符
            CmbYSF.AddItem "Mod"                                       '添加求模运算符
            CmbYSF.AddItem " ="                                        '添加相等运算符
            CmbYSF.AddItem " >"                                       '添加大于运算符
            CmbYSF.AddItem "Or"                                        '添加或运算符
        End Sub

保存工程并运行工程。当选择组合框中的“+”选项时,运行结果如图1.12所示。当选择组合框中的“Mod”选项时,运行结果如图1.13所示。当选择组合框中的“=”选项时,运行结果如图1.14所示。

图1.12 加法运算结果图

图1.13 求模运算结果图

图1.14 相等运算结果图

源代码解读

(1)代码首先定义两个常量x、y,分别赋值为20、3。然后,在Form_ Load()事件中初始化“CmbYSF”组合框。运用CmbYSF的AddItem方法加载各运算符:“+”、“*”、“/”、“\”、“Mod”、“=”、“>”、“Or”。

(2)单击“CmbYSF”组合框时,就触发CmbYSF_ Click()事件。在该事件中,首先由“Text1”文本框和“Text2”文本框获得两个常量作为操作数。然后运用Select Case语句,根据CmbYSF的ListIndex属性,选择不同的运算符进行运算。由“TxtResult”文本框的Text属性,显示最终的计算结果,并由“Label1”标签显示选择的运算符。

1.5 表达式

在上一节中介绍了运算符的使用,通过学习,相信读者对运算符的运用有更清晰的认识,并已理解各类运算符之间的优先关系。运算符的运用往往与表达式结合在一起,即运算符是表达式之间的某种运算功能。因此,本节就介绍表达式的有关知识,希望通过本节的介绍,读者能够更深入地理解表达式的含义及其应用。

技术要点

本节实例中主要用到的技术是组合框ComboBox的嵌套使用及Clear方法,表达式功能和用法如下:

●组合框的嵌套使用,即在单击一个组合框的Click事件中触发另外一个组合框的事件,在后面章节中详细介绍。

●组合框控件的Clear方法,主要作用是清空组合框中加载的内容,这主要是为了进一步在组合框中加载内容。

●表达式的使用,主要是为了参与某种运算从而完成某种功能。

使用表达式应先了解表达式的种类,表达式有三种:算术表达式、关系表达式和逻辑表达式。

●算术表达式是由变量、常量或者函数与算术运算符组合而成的式子。主要运用在算术运算中。

●关系表达式是由操作数和关系运算符组合而成的式子,主要运用在If语句中。

●逻辑表达式是由操作数和逻辑运算符组合而成的式子。

注意:在运用表达式时,要注意书写方式,否则可能出现错误。

实现代码

          Const x = 30,y = 7                               '定义常量x,y
          Private Sub CmbExpr_Click()
            TxtOne.Text = x                                 '获得第一个操作数
            TxtTwo.Text = y                                 '获得第二个操作数
            Select Case CmbExpr.ListIndex
            Case 0                                           '算术表达式的情况
                CmbOper.Clear                               '对组合框中的内容进行清空
                CmbOper.AddItem " +"                      '在"CmbOper"组合框中添加加法运算符
                CmbOper.AddItem " -"                      '在"CmbOper"组合框中添加减法运算符
                CmbOper.AddItem "*"                       '在"CmbOper"组合框中添加乘法运算符
                CmbOper.AddItem "/"                       '在"CmbOper"组合框中添加除法运算符
                CmbOper.AddItem "\"                       '在"CmbOper"组合框中添加整除运算符
                CmbOper.AddItem "Mod"                     '在"CmbOper"组合框中添加求模运算符
                CmbOper.AddItem "&"                       '在"CmbOper"组合框中添加连接运算符
                CmbOper.AddItem "^"                      '在"CmbOper"组合框中添加指数运算符
            Case 1                                           '关系表达式的情况
                CmbOper.Clear                               '对组合框中的内容进行清空
                CmbOper.AddItem " ="                      '在"CmbOper"组合框中添加相等运算符
                CmbOper.AddItem " < >"                  '在"CmbOper"组合框中添加不等于运算符
                CmbOper.AddItem " >"                     '在"CmbOper"组合框中添加大于运算符
                CmbOper.AddItem " <"                     '在"CmbOper"组合框中添加小于运算符
                CmbOper.AddItem " > ="                   '在"CmbOper"组合框中添加大于等于运算符
                CmbOper.AddItem " < ="                   '在"CmbOper"组合框中添加小于等于运算符
                CmbOper.AddItem "Like"                    '在"CmbOper"组合框中添加模式匹配运算符
            Case 2                                           '逻辑表达式的情况
                CmbOper.Clear                               '对组合框中的内容进行清空
                CmbOper.AddItem "Not"                     '在"CmbOper"组合框中添加取反运算符
                CmbOper.AddItem "And"                    '在"CmbOper"组合框中添加与运算符
                CmbOper.AddItem "Or"                     '在"CmbOper"组合框中添加或运算符
                CmbOper.AddItem "Xor"                    '在"CmbOper"组合框中添加异或运算符
                CmbOper.AddItem "Eqv"                    '在"CmbOper"组合框中添加等价运算符
                CmbOper.AddItem "Imp"                    '在"CmbOper"组合框中添加蕴含等运算符
            End Select
          End Sub
          Private Sub CmbOper_Click()
            Select Case CmbExpr.ListIndex
            Case 0
                Select Case CmbOper.ListIndex
                    Case 0                                                                     '加法运算的情况
                        TxtResult.Text = CInt(TxtOne.Text)+ CInt(TxtTwo.Text) '加法运算
                        LabShow.Caption = "算术表达式中的加法运算"                          '运算类型
                    Case 1                                                                     '减法运算的情况
                        TxtResult.Text = CInt(TxtOne.Text)- CInt(TxtTwo.Text)             '减法运算
                        LabShow.Caption = "算术表达式中的减法运算"                          '运算类型
                    Case 2                                                                     '乘法运算的情况
                        TxtResult.Text = CInt(TxtOne.Text)* CInt(TxtTwo.Text)             '乘法运算
                        LabShow.Caption = "算术表达式中的乘法运算"                          '运算类型
                    Case 3                                                                     '除法运算的情况
                        TxtResult.Text = CInt(TxtOne.Text)/ CInt(TxtTwo.Text)             '除法运算
                        LabShow.Caption = "算术表达式中的除法运算"                          '运算类型
                    Case 4                                                                     '整除运算的情况
                        TxtResult.Text = CInt(TxtOne.Text)\ CInt(TxtTwo.Text)             '整除运算
                        LabShow.Caption = "算术表达式中的整除运算"                          '运算类型
                    Case 5                                                                     '求模运算的情况
                        TxtResult.Text = CInt(TxtOne.Text)Mod CInt(TxtTwo.Text)           '求模运算
                        LabShow.Caption = "算术表达式中的求模运算"                          '运算类型
                    Case 6                                                                     '连接运算的情况
                        TxtResult.Text = TxtOne.Text & TxtTwo.Text                            '连接运算
                        LabShow.Caption = "算术表达式中的连接运算"                          '运算类型
                    Case 7                                                                     '指数运算的情况
                        TxtResult.Text = CInt(TxtOne.Text)^ CInt(TxtTwo.Text)            '指数运算
                        LabShow.Caption = "算术表达式中的指数运算"                          '运算类型
                End Select
            Case 1
                Select Case CmbOper.ListIndex
                    Case 0                                                                 '相等比较运算的情况
                        TxtResult.Text=CInt(TxtOne.Text)=CInt(TxtTwo.Text)            '相等比较运算
                        LabShow.Caption = "关系表达式中的相等比较运算"                  '运算类型
                    Case 1                                                                 '不等于比较运算的情况
                        TxtResult.Text=CInt(TxtOne.Text)< >CInt(TxtTwo.Text)        '不等于比较运算
                        LabShow.Caption = "关系表达式中的不等于比较运算"                '运算类型
                    Case 2                                                                 '大于比较运算的情况
                        TxtResult.Text=CInt(TxtOne.Text)>CInt(TxtTwo.Text)           '大于比较运算
                        LabShow.Caption = "关系表达式中的大于比较运算"                  '运算类型
                    Case 3                                                                 '小于比较运算的情况
                        TxtResult.Text=CInt(TxtOne.Text)<CInt(TxtTwo.Text)           '小于比较运算
                        LabShow.Caption = "关系表达式中的小于比较运算"                  '运算类型
                    Case 4                                                                 '大于比较运算的情况
                        TxtResult.Text=CInt(TxtOne.Text)> =CInt(TxtTwo.Text)         '大于等于比较运算
                        LabShow.Caption = "关系表达式中的大于等于比较运算"              '运算类型
                    Case 5                                                                  '小于比较运算的情况
                        TxtResult.Text=CInt(TxtOne.Text)< =CInt(TxtTwo.Text)          '小于等于比较运算
                      LabShow.Caption = "关系表达式中的小于等于比较运算"                 '运算类型
                   Case 6                                                                    '模式匹配运算的情况
                      TxtResult.Text = TxtOne.Text Like TxtTwo.Text                          '模式匹配运算
                      LabShow.Caption = "关系表达式中的模式匹配运算"                     '运算类型
                End Select
            Case 2
                Select Case CmbOper.ListIndex
                   Case 0                                                                    '取反运算的情况
                      TxtResult.Text = Not CInt(TxtTwo.Text)                              '取反运算
                      LabShow.Caption = "逻辑表达式中的取反运算"                         '显示运算类型
                   Case 1                                                                    '与运算的情况
                      TxtResult.Text=CInt(TxtOne.Text)And CInt(TxtTwo.Text)             '与运算
                        LabShow.Caption = "逻辑表达式中的与运算"                         '显示运算类型
                    Case 2                                                                  '或运算的情况
                        TxtResult.Text=CInt(TxtOne.Text)Or CInt(TxtTwo.Text)            '或运算
                        LabShow.Caption = "逻辑表达式中的或运算"                         '显示运算类型
                    Case 3                                                                  '异或运算的情况
                        TxtResult.Text=CInt(TxtOne.Text)Xor CInt(TxtTwo.Text)           '异或运算
                        LabShow.Caption = "逻辑表达式中的异或运算"                       '显示运算类型
                    Case 4                                                                  '等价运算的情况
                        TxtResult.Text=CInt(TxtOne.Text)Eqv CInt(TxtTwo.Text)           '等价运算
                        LabShow.Caption = "逻辑表达式中的等价运算"                       '显示运算类型
                    Case 5                                                                  '蕴含运算的情况
                        TxtResult.Text=CInt(TxtOne.Text)Imp CInt(TxtTwo.Text)           '蕴含运算
                        LabShow.Caption = "逻辑表达式中的蕴含运算"                       '显示运算类型
                End Select
            End Select
          End Sub
          '初始化"CmbExpr"组合框,添加表达式类型
          Private Sub Form_Load()
            CmbExpr.AddItem "算术表达式"
            CmbExpr.AddItem "关系表达式"
            CmbExpr.AddItem "逻辑表达式"
          End Sub

保存工程并运行工程。当选择组合框中的“+”选项时,运行结果如图1.15所示。当选择组合框中的“-”选项时,运行结果如图1.16所示。当选择组合框中的“*”选项时,运行结果如图1.17所示。

图1.15 加法运算结果图

图1.16 减法运算结果图

图1.17 乘法运算结果图

源代码解读

(1)代码首先定义两个常量x、y,并且分别赋值为30、7。这两个常量分别作为表达式中的第一个和第二个操作数。

(2)在Form_ Load()事件中,主要对“CmbExpr”组合框进行初始化。运用控件的AddItem方法加载表达式类型:“算术表达式”、“关系表达式”、“逻辑表达式”。当单击“CmbExpr”组合框时,就会触发CmbExpr_ Click()事件。

(3)在CmbExpr_ Click()事件中,执行对“CmbOper”组合框的初始化。根据CmbExpr的ListIndex属性,运用CmbOper的AddItem属性,对“CmbOper”组合框加载不同的内容。

(4)当CmbExpr中的内容为算术表达式时,需要加载算术运算符:“+”、“-”、“*”、“/”、“\”、“Mod”、“&”、“^”。当CmbExpr中的内容为关系表达式时,需要加载关系运算符:“=”、“< >”、“>”、“<”、“> =”、“< =”、“Like”。当CmbExpr中的内容为逻辑表达式时,需要加载逻辑运算符:“Not”、“And”、“Or”、“Xor”、“Eqv”、“Imp”。另外,加载内容之前要运用CmbOper的Clear方法清空原来的内容。

(5)当单击“CmbOper”组合框时,就触发CmbOper_ Click()事件。在CmbOper_ Click()事件中,根据CmbExpr的ListIndex属性和CmbOper的ListIndex属性进行表达式的运算,由程序可以看出共有21种运算,这里不再一一解释。