




已阅读5页,还剩64页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章 数组、集合与结构,4.1 数组 4.2 集合 4.3 枚举 4.4 结构,前 言,VB 2005提供了可以存储复杂数据的几种复合数据类型,其中包括数组、枚举、集合、结构。在许多场合,使用复合数据类型可以缩短和简化程序。 本章主要介绍复合数据类型的概念和使用。,4.1 数 组,数组就是这样的一种特殊变量类型,是用一个统一的名称表示的、顺序排列的一组变量的集合。数组中的变量称为数组元素,每个变量都分配有一个序号(称为下标或索引)来标志它们,因此数组元素又称为下标变量。 本节主要介绍VB 2005的数组,包括数组的基本概念、数组的声明以及如何应用数组。,4.1.1 数组的维数,如果一个数组的元素只有一个下标,则称这个数组为一维数组。 例如,数组S有10个元素:S(0)、S(1)、S(2)、S(9),依次保存10个学生的一门功课的成绩,则S为一维数组。 一维数组中的各个元素又称为单下标变量。一维数组中的下标又称为索引(Index)。 有两个下标的数组称为二维数组,其中的数组元素称为双下标变量。二维数组可以看成是一个表,也称为“矩形数组”。 数组元素中下标的个数称为数组的维数,维数还可以称为“秩”。可以通过为数组的每一维提供“索引”或“下标”来指定数组元素。在每一维中,元素都按照从索引0到该维的最大索引的顺序连续排列。 在VB2005中数组维数最多可达到32维。,4.1.2 数组的声明,数组变量的声明与其他变量的声明一样。在变量名后加上一对或几对圆括号,即可表示它是数组而不是简单变量。 1. 声明单维数组 单维数组也称为一维数组。在声明单维数组时要指定它的数组名称、大小、元素数据类型和访问权限。 其语法格式如下: () As 下标下界默认从0开始。,例如: Dim myArray(5) As Integer 声明了一个名称为myArray的局部数组,有6个元素,下标索引从0到5 Public Sums(10) As Integer 声明了一个名称为Sums的公有数组,有11个元素,下标索引从0到10 可以在声明后再给数组元素赋值,也可以在声明时就赋值。 例如: Sums(3) = “你好“ 给数组元素Sums(3)赋值一个字符串 Dim counters() As Integer = 1, 2, 3, 4, 5 声明了一个名称为counters的数组,有5个元素,同时给数组元素赋值 不允许给声明时带有数组元素初始数目的数组赋值。例如: Dim counters(4) As Integer = 1, 2, 3, 4, 5 声明错误,2. 声明多维数组 在声明多维数组中,其语法格式如下: () As 例如: Dim myarr1(2, 3, 4, 5) As Integer 声明一个名称为myarr1的4维数组变量 声明一个名称为myarr2的二维数组变量,(2+1)(3+1)=12个元素 Dim myarr2(2, 3) As Integer 声明一个名称为myarr3的三维数组变量,345=60个元素 Dim myarr3(2, 3, 4) As Integer 声明arr数组的秩同时给数组赋值 Dim arr(,) As String = “a“, “b“, “c“, “d“, “e“, “f“,3. 动态数组 在程序中使用数组时,随着程序的运行,可能数组原来的大小已经不能满足要求,那么就会遇到需要改变数组大小的情况。 VB 2005规定不能改变已声明数组的维数(也称为“秩”),但可以通过ReDim语句改变已声明数组的元素个数,也就是为数组变量重新分配存储空间。 其语法格式如下: ReDim Preserve () 说明: Preserve参数用来保留现有数组中的数据。,例如: 声明MyArray为二维数组 Dim MyArray(,) As Double 声明MyArray二维数组的元素个数 ReDim MyArray(5, 5),对数组元素的操作如同对简单变量的操作,与简单变量不同的是,数组变量除了引用数组名之外,还要标明它的下标。 例如: Dim a(5) As Integer a(3)=10 TextBox2.Text = a(3),4.1.3 使用数组,4.1.4 多行文本框(RichTextBox)控件,VB 2005提供了多行文本框(RichTextBox)控件,来显示多行文本信息。多行文本框控件与文本框最大的区别就是可以将结果以多行的形式显示。它的属性、方法和事件与文本框控件相似。 【例4-1】有一个55的矩阵,随机产生25个两位数赋值给该数组,求全部元素的平均值。,Dim myArray(4, 4) As Integer 在窗体级模块声明一个二维数组 命令按钮“生成数组”的Click事件,生成一个二维数组 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _Handles Button1.Click Dim i, j As Integer 声明循环体变量 Dim str As String = “ 声明用来数组显示的字符串变量 For i = 0 To 4 For j = 0 To 4 myArray(i, j) = Int(Rnd() * 90) + 10 str = str & “myArray“ & “(“ & i & “ , “ & j & “)“ & “ = “ & myArray(i, j) & Chr(10) Next Next RichTextBox1.Text = str 数组赋值给多行文本框显示 End Sub, 命令按钮“计算”的Click事件 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _Handles Button2.Click Dim i, j, sum As Integer Dim average As Double For i = 0 To 4 For j = 0 To 4 sum = sum + myArray(i, j) 计算数组总和 Next Next average = sum / 25 计算数组平均值 TextBox1.Text = CStr(average) End Sub,4.1.5 列表框(ListBox)控件,下拉列表框一次只能显示和选择一个数据项,但有时用户需要显示或选择多个数据项。 VB 2005提供了列表框(ListBox)控件,列表框控件可以将所有结果显示在一个列表中。 列表框控件常用属性,列表框控件常用方法,【例4-2】求斐波那契数列。,【例4-2】 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles Button1.Click Dim Fib(20), i As Integer ListBox1.Items.Clear() 初始化清空列表框 Fib(1) = 1 : Fib(2) = 1 给斐波那契数列的前两个数组赋值 ListBox1.Items.Add(“Fib(“ & 1 & “)=“ & 1) 添加到列表框 ListBox1.Items.Add(“Fib(“ & 2 & “)=“ & 1) 添加到列表框 For i = 3 To 20 Fib(i) = Fib(i - 1) + Fib(i - 2) 求其他斐波那契数列的数组值 ListBox1.Items.Add(“Fib(“ & i & “)=“ & Fib(i) Next End Sub,【例4-3】设有10位学生的大学英语、离散数学、数据结构3门课程的成绩。求每人的平均成绩,各科的不及格的学生姓名。,【例4-3】 在所有事件的前面声明数组 Dim Student(9) As String Dim Stu_Score(9, 2) As Double 窗体的Load事件 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _Handles MyBase.Load Dim i, j As Integer 给数组分别赋值 Student(0) = “张 明“ : Stu_Score(0, 0) = 80 : Stu_Score(0, 1) = 55 : Stu_Score(0, 2) = 90 Student(1) = “李大生“ : Stu_Score(1, 0) = 85 : Stu_Score(1, 1) = 80 : Stu_Score(1, 2) = 86 Student(2) = “郭广民“ : Stu_Score(2, 0) = 70 : Stu_Score(2, 1) = 65 : Stu_Score(2, 2) = 73 Student(3) = “马英英“ : Stu_Score(3, 0) = 55 : Stu_Score(3, 1) = 70 : Stu_Score(3, 2) = 69 Student(4) = “赵 阳“ : Stu_Score(4, 0) = 79 : Stu_Score(4, 1) = 46 : Stu_Score(4, 2) = 90 Student(5) = “杨大伟“ : Stu_Score(5, 0) = 78 : Stu_Score(5, 1) = 89 : Stu_Score(5, 2) = 82 Student(6) = “王东平“ : Stu_Score(6, 0) = 79 : Stu_Score(6, 1) = 79 : Stu_Score(6, 2) = 87 Student(7) = “刘小林“ : Stu_Score(7, 0) = 70 : Stu_Score(7, 1) = 50 : Stu_Score(7, 2) = 48 Student(8) = “姜珊珊“ : Stu_Score(8, 0) = 78 : Stu_Score(8, 1) = 85 : Stu_Score(8, 2) = 89 Student(9) = “吴林林“ : Stu_Score(9, 0) = 88 : Stu_Score(9, 1) = 89 : Stu_Score(9, 2) = 90, 将学生数组添加到列表中 For i = 0 To 9 ListBox1.Items.Add(Student(i) Next 将课程信息添加到下拉列表中 ComboBox1.Items.Add(“大学英语“) ComboBox1.Items.Add(“离散数学“) ComboBox1.Items.Add(“数据结构“) End Sub 下拉列表框的SelectedIndexChanged事件 Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As _System.EventArgs) Handles ListBox1.SelectedIndexChanged Dim i As Integer Dim sum, avg As Single For i = 0 To 9 循环判断每个列表框选项个成绩数组 If ListBox1.GetSelected(i) = True Then 判断列表框中哪个选项被选中 TextBox1.Text = Stu_Score(i, 0) 大学英语成绩 TextBox2.Text = Stu_Score(i, 1) 离散数学成绩 TextBox3.Text = Stu_Score(i, 2) 数据结构成绩 sum = Stu_Score(i, 0) + Stu_Score(i, 1) + Stu_Score(i, 2) 计算总分 TextBox5.Text = sum avg = sum / 3 计算平均分 TextBox4.Text = Math.Round(avg, 1) 平均分只保留1位小数 Exit For 计算结束,退出ForNext循环 End If Next End Sub, 命令按钮“统计”的Click事件 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _Handles Button1.Click Dim Course, Name As String Dim i As Integer Course = ComboBox1.Text Select Case Course 判断下拉列表框选中哪门课程 Case Is = “大学英语“ 如果是大学英语 For i = 0 To 9 循环判断成绩 If Stu_Score(i, 0) 60 Then 如果不及格 Name = Name & Student(i) & “ “ 挑出不及格学生姓名 End If Next Case Is = “离散数学“ 如果是离散数学 For i = 0 To 9 If Stu_Score(i, 1) 60 Then Name = Name & Student(i) & “ “ End If Next Case Is = “数据结构“ 如果是数据结构 For i = 0 To 9 If Stu_Score(i, 2) 60 Then Name = Name & Student(i) & “ “ End If Next End Select TextBox6.Text = Name 显示不及格学生姓名 End Sub,4.1.6 进度条(ProgressBar)控件,由于有的数组比较大,在生成期间用户经常要观察数组生成进度。VB 2005提供了进度条(ProgressBar)控件来提示进度。 进度条控件常用属性,【例4-4】一个有100个元素的一维数组,随机产生100个3位数整数,输出数组并计算数组的和。,【例4-4】 在所有事件的前面声明数组 Dim a(100) As Integer 命令按钮“生成数组”的Click事件 Private Sub Button1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles _Me.Load Dim myString As String Dim i As Integer Randomize() myString = “ For i = 1 To 100 循环数组 赋给每个数组变量一个随机数 a(i) = CInt(Int(999 - 100 + 1) * Rnd() + 100) myString = myString & a(i) & Space(2) ProgressBar1.Value = i + 1,If i Mod 4 = 0 Then 如果每行显示超过4个数据 myString = myString & Chr(13) 连接一个回车换行符,换行显示 End If Next Label1.Text = myString End Sub 命令按钮“计算”的Click事件 Private Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) _Handles Button1.Click Dim i As Integer Dim sum As Double For i = 1 To 100 sum = sum + a(i) 计算数组总和 Next TextBox1.Text = sum End Sub,4.1.8 For EachNext语句,与ForNext语句类似,都是重复执行指定的一组语句。但For EachNext语句专门用于数组或集合,对数组或集合中的每个元素重复一组操作。 其语法格式如下: For Each As In Exit For Next 说明: (1)用于循环访问集合的元素。的数据类型必须是元素的数据类型或能够隐式转换到的类型。 (2)是可选项。如果尚未声明,则是必选项,表示的数据类型。如果在此循环外声明,则不能再重新声明。 (3)选项必须引用对象集合或数组。,【例4-5】将【例4-4】的“计算”命令按钮的Click事件代码改写如下: 命令按钮“计算”的Click事件 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _Handles Button2.Click Dim m As Integer Dim sum As Double For Each m In a m中存储数组a()的元素值 sum = sum + m Next TextBox1.Text = sum End Sub,课后练习,1 数组的逆序 2 数组的排序 3 数组的查找 4 数组的复制,思考!,4.1.9 数组常用的属性和方法,数组本质上是一个类,它有许多属性和方法,可以调用属性和方法来完成许多操作。程序员声明一个数组变量,其实是由Array类生成了一个具体的数组对象。 Array数组常用属性见表所示。,Array数组常用方法,【例4-6】声明一个名为Student的String对象的数组,用学生姓名填充数组,可以存储5个姓名。然后按姓名的字母顺序对数组中的元素进行排序。 编写事件代码。 在所有的过程之前声明数组 Dim student(4) As String Dim i As Integer = 0 命令按钮“确定”的Click事件 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _Handles Button1.Click student(i) = TextBox1.Text 将键盘输入的数据赋值给数组变量 ListBox1.Items.Add(student(i) 将数组值添加到列表框中 ListBox1.Refresh() 刷新列表框,将新添加数据显示出来 i = i + 1 If i 4 Then 判断添加数组个数 Button1.Enabled = False 如果大于4个,超出数组范围,则不能再添加 End If End Sub, 命令按钮“排序”的Click事件 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _Handles Button2.Click Array.Sort(student) 数组重新排序 ListBox1.Items.Clear( ) 列表框数据清空 Dim a As Integer For a = 0 To 4 重新给列表框添加数据 ListBox1.Items.Add(student(a) Next ListBox1.Refresh( ) 刷新列表框,将新添加数据显示出来 End Sub,4.1.10 快捷方式生成数组,在VB 2005中,程序员除了可以在代码编辑窗口中,直接声明数组和调用数组,还可以通过快捷方式“插入代码段”来声明数组和调用数组。 程序员在代码编辑窗口中,单击鼠标右键,在快捷菜单中选择“插入代码段”选项。系统自动显示一个下拉列表,选择“集合和数组”选项。再选择相应的选项,系统自动插入相应代码。,4.1.11 VB 2005中控件对象数组,一个应用程序可能会有许多相同的控件对象,例如多个文本框、多个标签等。这些控件对象如果具有相同的属性、方法和事件,也可以将它们看作是一个文本框对象数组、标签对象数组。 在VB 2005中,不再支持控件数组,但可以使用事件模型来重复和扩展许多控件数组的功能。,1. 共享事件处理程序 在VB 6.0中,控件数组可用于指定一组共享事件集的控件。这些控件应该为相同的类型,并且具有相同的名称。 VB 2005允许任何事件处理程序处理来自多个控件的事件,即使是具有不同名称和不同类型的控件。 在VB 2005中,事件处理程序的Handles子句指定事件将处理的控件。只需要在控件共享相同的事件的过程首部参数Handles后面加上共享的控件名称和事件就可以了。这样可以简化程序代码的编写。 例如,可以向窗体添加两个Button控件(Button1和Button2)以及一个CheckBox控件(CheckBox1),然后创建一个事件处理程序来处理这三个控件的Click事件。 Private Sub MixedControls.Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, CheckBox1.Click,2. 访问控件数组 VB 6.0使用Index属性访问控件数组。例如,若要清除控件数组中所有TextBox控件的文本,可将Index属性作为循环变量循环访问控件数组。 VB 2005中,控件没有Index属性,但是可以使用另一个公共属性(例如TabIndex属性)来实现相同的功能;也可使用Control类的ControlCollection循环访问窗体或容器上的控件。,【例4-7】三个Button命令按钮控件共享相同事件。 编写事件代码。 Dim week(7) As String 以对象名来区分命令按钮对象 Private Sub MixedControls_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click, Button2.Click, Button3.Click Dim i As Integer Select Case DirectCast(sender, Button).Name 判断Button名称 Case Button1.Name 如果是Button1 TextBox1.Text = “今天是“ & Today Case Button2.Name 如果是Button2 TextBox1.Text = “现在是“ & TimeOfDay Case Button3.Name 如果是Button3 For i = 1 To 7 If i = Weekday(Now) Then TextBox1.Text = “现在是“ & week(i) End If Next End Select End Sub, 以对象的TabIndex属性来区分命令按钮对象 Private Sub Buttones_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click, Button2.Click, Button3.Click Dim i As Integer Select Case sender.TabIndex 判断TabIndex序号 Case 0 如果是Button1 TextBox1.Text = “今天是“ & Today Case 1 如果是Button2 TextBox1.Text = “现在是“ & TimeOfDay Case 2 如果是Button3 For i = 1 To 7 If i = Weekday(Now) Then TextBox1.Text = “现在是“ & week(i) End If Next End Select End Sub 窗体的Load事件 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _Handles MyBase.Load week(1) = “星期日“ week(2) = “星期一“ week(3) = “星期二“ week(4) = “星期三“ week(5) = “星期四“ week(6) = “星期五“ week(7) = “星期六“ End Sub,4.1.12 复选列表框(CheckedListBox)控件,复选框控件一般都要显示多个选项,因此可以将这些选项看作是一个组。可以选中单个选项,也可以选中多个选项。 VB 2005提供了复选列表框(CheckedListBox)控件,它结合了复选框控件和列表框的特征,来明显的表示选中选项。复选列表框控件扩展了列表框控件。它几乎能完成列表框可以完成的所有任务,并且还可以在列表中的项旁边显示复选标记。,【例4-9】利用复选列表框控件选择选修课程。 窗体的Load事件代码,在第1个复选列表框中添加选项 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 向CheckedListBox中添加数据 CheckedListBox1.Items.Add(“大学英语“) CheckedListBox1.Items.Add(“大学语文“) End Sub, 命令按钮的事件代码,以对象名来区分命令按钮对象 Private Sub MixedControls_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, Button3.Click, Button4.Click Dim i, j As Integer Select Case DirectCast(sender, Button).Name Case Button1.Name 向CheckedListBox2中添加选项 For i = 0 To CheckedListBox1.CheckedItems.Count - 1 If CheckedListBox1.CheckedItems.Count 0 Then CheckedListBox2.Items.Insert(i,_ CheckedListBox1.CheckedItems(i).ToString) End If Next i 从CheckedListBox1中移除选项 For j = CheckedListBox1.CheckedItems.Count - 1 To 0 Step -1 CheckedListBox1.Items.Remove(CheckedListBox1.CheckedItems.Item(j) Next j ,4.1.13 页框(TabControl)控件,有的应用程序由于需要较多的控件,在1个窗体上显示显的有些拥挤,甚至于显示不出来。VB 2005中提供页框(TabControl)控件,可以在1个窗体上显示多页面信息。 页框有一组选项卡,可以利用TabPages属性添加或删除选项卡。,【例4-10】在窗体上页框的不同选项卡上显示大写字母ASCII编码表和小写字母ASCII编码表。,【例4-10】 窗体的Click事件 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _Handles MyBase.Load Dim i, j As Integer Dim s, t As String For i = 65 To 90 s = s & Chr(i) & “=“ & CStr(i) & Space(1) j = j + 1 If j = 5 Then s = s & Chr(13) j = 0 End If Next RichTextBox1.Text = s j = 0 For i = 97 To 122 t = t & Chr(i) & “=“ & CStr(i) & Space(1) j = j + 1 If j = 5 Then t = t & Chr(13) j = 0 End If Next RichTextBox2.Text = t End Sub,4.2 集 合,一般来说,集合是一个用于对相关对象进行分组和管理的对象。 例如,每个Form均具有一个控件集合,此集合是一个表示该窗体上所有控件的对象。它允许按照控件的索引在集合中检索控件,以及使用For EachNext语句来循环访问集合中的元素。 本节主要介绍利用VB 2005提供的Collection集合的定义和创建。,4.2.1 集合概述,集合(Collection)是一种将一组相关项组合在一起的方法。存在许多不同类型的集合。出于多种目的,VB2005不提供单独的Collection集合数据类型。集合的功能是通过 .NET框架类库的System.Collections命名空间提供的。 VB 2005中使用了预定义集合。例如窗体上的对象都是保存在同一文件中,而且VB将这些对象视为同一组的成员,那么窗体上所有对象合称为Controls集合。 Controls集合是在打开新窗体自动创建的。当向窗体添加新对象,该对象即成为该集合的一部分。程序中每个集合都有唯一的名称,因此程序中可将其作为一个独立单元。如果一个项目中有多个窗体,可以使用不同的Controls集合访问窗体之间的变量等。,例如,在窗体上有3个标签: Controls(0).Text = “计算机“ Controls(1).Text = “打印机“ Controls(2).Text = “照相机“ 说明:通过引用Controls集合里不同的对象(通过索引值),可以给窗体中的标签赋值。 VB 2005也可以创建自己的集合以组织和操作对象自己的集合。与窗体的Controls集合类似,Collection类也提供了使用For EachNext来循环访问元素以及按照索引检索元素的内置功能。,4.2.2 创建集合,创建集合的方法采用的是创建对象的方法,其语法格式如下: As New Collection 说明:集合中的元素的索引值是从1开始的。 例如,创建一个集合变量User: Dim User As New Collection,4.2.3 使用集合,在创建一个集合后,可以使用集合的方法来操作集合元素。 常用方法有:Add方法(添加)、Remove方法(移除)、Clear方法(清空)、Contains方法(判断某个元素是否存在)等。还可以用集合的属性来分析集合,常用的属性有:Count属性(集合元素数量)、Item属性(集合中特定成员)。,【例4-11】定义一个集合people,存储学生学号和姓名,对集合进行操作。,【例4-11】 Imports System.Collections Public Class Form1 Dim people As New Collection() 创建个名为people的集合 命令按钮“添加”的Click事件 Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles Button1.Click people.Add(TextBox2.Text) 向集合添加数据 TextBox1.Clear() TextBox2.Clear() End Sub, 命令按钮“统计”的Click事件 Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _Handles Button2.Click TextBox4.Text = people.Count 统计集合中数据项个数 End Sub 命令按钮“查找”的Click事件 Private Sub button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _Handles Button3.Click Dim name As String name = Trim(TextBox3.Text) If people.Contains(name) Then 查询集合数据 Label5.Text = “找到了“ & name Else Label5.Text = “没有找到“ & name End If End Sub End Class,除了使用集合的方法来操作集合元素,还可以使用For Each.Next语句遍历整个集合。其语法格式如下: For Each As In Exit For Next,【例4-12】使用For Each.Next语句遍历people集合。将【例4-10】中的Find_Click事件代码改写如下: Private Sub Find_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Find.Click Dim name, c As String name = Trim(TextBox3.Text) 在birthdays集合中查找name元素 For Each c In people If c = name Then Label5.Text = “找到了“ & name Exit For Else Label5.Text = “没有找到“ & name End If Next End Sub,4.3 枚 举,编程时,有时需要用到一系列的相互关联的常量,例如在使用颜色时,不希望记忆那些枯燥的颜色值,那么这时候就可以定义成常量,用熟悉的英文名字来命名颜色。但是,通常的常量定义只能一个一个地定义,而常用的颜色又是多种多样的。这时就可以使用VB 2005的枚举类型。 本节主要介绍枚举类型的使用。,4.3.1 声明枚举,枚举类型通过Enum语句来声明,其语法格式如下: Enum = 常数表达式 = 常数表达式 End Enum 说明: 1) 使用Enum关键字声明枚举类型。 2)是定义枚举中的常数。默认情况下,枚举中的第一个常数初始化为0,后面的常数初始化为比前面的常数多1的值。 3) 可使用赋值语句将值显式赋予枚举中的常数。可赋予任何整数值,包括负数。 4) 枚举类型通常是逻辑上彼此相关的不变值,而且只能在命名空间或模块级别使用Enum。,4.3.2 使用枚举,声明枚举变量之后,就可以使用该枚举类型的变量,然后使用该变量存储枚举常数的值。若要引用枚举类型变量的成员,其语法格式如下: .,【例4-13】声明一个枚举类型,用来表示星期名称。在本文框中输入星期名称,输出相应的星期数。, 声明1个名为Days的枚举类型 Public Enum Days Monday = 1 Tuesday = 2 Wednesday = 3 Thursday = 4 Friday = 5 Saturday = 6 Sunday = 7 End Enum Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim weekday As String weekday = TextBox1.Text Select Case weekday Case “Monday“ Label2.Text = Days.Monday Case “Tuesday“ Label2.Text = Days.Tuesday End Select End Sub,4.3.3 快捷方式生成枚举,在VB 2005中,程序员也可以通过快捷方式“插入代码段”来操作枚举。 程序员在代码编辑窗口中,单击鼠标右键(注意:应该将鼠标移至所有事件之外),在快捷菜单中选择“插入代码段”选项。系统自动显示一个下拉列表,选择“通用代码模式”选项,再选择“类型”选项,选择相应的选项。,4.4 结 构,在一些实际应用中,有些数据是相互联系的,但它们却是不同类型的数据,为了把它们组合成一个有机的整体,就需要让单个变量保存这几个数据,以便在程序中引用这些数据。例如,一个雇员的基本信息包括的姓名、电话分机号和薪金等数据,这些数据类型各不相同,但它们都是雇员的基本信息,因此把上述不同类型数据作为一个整体来进行处理。可以定义一个结构并将它用于单个雇员变量。 另外,结构和枚举类型一样作为一种数据类型来使用,而且结构的各成员可以定义各自的访问权限。可以合并不同类型的数据项来创建结构。结构将一个或多个“元素”彼此关联并且将它们与结构本身关联。声明了结构后,它将成为“复合数据类型”,然后就可以声明该类型的变量。 本节主要介绍结构的定义和使用。,4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 5G技术驱动下的2025年互联网医疗在线问诊质量控制报告
- 文化传播公司品牌营销与推广策略制定
- 玩具行业的数字化转型与并购案例分析-洞察及研究
- 助听器验配师能力提升B卷题库及参考答案详解(夺分金卷)
- 视觉符号传播规律-洞察及研究
- 社会资本进入医疗行业2025年政策利好与投资风险提示
- 中级银行从业资格之中级银行业法律法规与综合能力综合检测提分(历年真题)附答案详解
- 注册公用设备工程师能力检测试卷含完整答案详解(全优)
- 自考公共课模拟试题及参考答案详解AB卷
- 专升本练习题附答案详解【培优A卷】
- 2025新版企业员工劳动合同范本
- PCR实验室基因扩增检验人员培训试题及答案
- 2025年全国版图知识竞赛(中学组)历年参考题库含答案详解(5卷)
- 2025年西藏自治区三支一扶人员招募考试(公共基础知识)历年参考题库含答案详解(5卷)
- 2025年富县辅警考试题库(附答案)
- 2026届张家港市达标名校中考语文模试卷含解析
- 保密观试题含答案2025年
- 柏拉图教育思想体系解析
- 奶茶线上活动方案
- 军训医疗知识培训
- 公司适用法律法规标准清单2025年08月更新
评论
0/150
提交评论