1、第第5章章 循环结构、列表框和组合框循环结构、列表框和组合框5.1循环语句循环语句5.2循环嵌套循环嵌套5.3列表框与组合框列表框与组合框5.4综合实例综合实例5.5本章小结本章小结5.1 循环语句循环语句5.1.1ForNext结构结构5.1.2DoLoop结构结构5.1.1ForNext结构结构For 循环变量循环变量=初值初值 To 终值终值Step 步长步长 Exit ForNext 循环变量循环变量(1)计算初值、终值及步长表达式的值,并将初值赋给循环变量;)计算初值、终值及步长表达式的值,并将初值赋给循环变量;(2)判断循环变量的值是否)判断循环变量的值是否“超过超过”终值:终值:
2、当步长为正时,当步长为正时,“超过超过”是指循环变量的值是指循环变量的值终值;终值;当步长为负时,当步长为负时,“超过超过”是指循环变量的值是指循环变量的值l0 then Exit For End If Next i5.1.1ForNext结构结构(7)Next后面的循环变量与后面的循环变量与For语句中的循环变量必须相同,且两语句中的循环变量必须相同,且两者必须成对出现。者必须成对出现。(8)在)在For循环体中改变循环控制变量的值,将会影响循环次数。循环体中改变循环控制变量的值,将会影响循环次数。例如:例如:Dim s As Integer,i As IntegerFor i1 To 10
3、 s=s+i ii+l Next i 按按For语句函数功能可得该循环体应重复执行语句函数功能可得该循环体应重复执行10次,求得次,求得1+2+3+10的和。由于循环体中有语句的和。由于循环体中有语句ii+1,每次执行时都,每次执行时都“破坏破坏”控制变量的取值,导致此控制变量的取值,导致此For循环体只重复执行了循环体只重复执行了5次,求次,求到的是到的是1+3+5+7+9的和。的和。5.1.1ForNext结构结构通过循环变量的变化在窗体上输出彩色字,程序运行界面如图通过循环变量的变化在窗体上输出彩色字,程序运行界面如图所示。所示。5.1.1ForNext结构结构图 例5-1运行界面Pri
4、vate Sub Form_Click()Dim i As Integer,green As Integer,blue As IntegerRandomize TimerFor i=1 To 2000 Step 200 green=Int(255*Rnd+1)blue=Int(255*Rnd+1)CurrentX=500+i CurrentY=500+i ForeColor=RGB(i,green,blue)Print 欢迎来到VB世界Next iEnd Sub图 例5-1流程图求任意输入的一个数的阶乘,运行界面如图所示。求任意输入的一个数的阶乘,运行界面如图所示。5.1.1ForNext结构
5、结构图 例5-2运行界面对象属性属性值窗体Caption计算阶乘标签1(名称)NumLabelCaption输入数字:标签2(名称)ResultLabelCaption文本框(名称)InputTextText命令按钮(名称)ComputeCmdCaption计算表5-1例5-2主要界面对象的属性设置值Private Sub ComputeCmd _Click()Dim value As IntegerDim result As DoubleDim i As IntegerIf IsNumeric(InputText.Text)Thenvalue=CInt(InputText.Text)resu
6、lt=1For i=1 To valueresult=result*iNext iResultLabel.Caption=结果为:&resultElseResultLabel.Caption=输入的不是数字,无法计算!End IfEnd SubPrivate5.1.2 DoLoop结构结构1.DoLoop语句语句2.Do WhileLoop语句语句3.DoLoop While语句语句4.Do UntilLoop语句语句5.DoLoop Until语句语句DoLoop语句语句Do Exit Do Loop其中,其中,Exit Do语句是可选语句,它提供一种退出语句是可选语句,它提供一种退出Do循
7、环的方循环的方法,并且只能在法,并且只能在Do循环中使用,可以在循环体任何位置放置任循环中使用,可以在循环体任何位置放置任意多个意多个Exit Do语句,以便跳出语句,以便跳出Do循环。循环。Exit Do通常用于条件通常用于条件判断判断(IfThen)之后,在这种情况下之后,在这种情况下Exit Do语句将控制权转移语句将控制权转移到紧接在到紧接在Loop语句之后的语句。如果语句之后的语句。如果Exit Do使用在嵌套的使用在嵌套的Do循环中,则循环中,则Exit Do会将控制权转移到会将控制权转移到Exit Do所在位置的外层所在位置的外层循环。循环。Do WhileLoop语句语句Do
8、While Exit DoLoop首先判断条件表达式的值是否为首先判断条件表达式的值是否为True。若为。若为False,则退出,则退出循环,执行循环,执行Loop后面的语句。若为后面的语句。若为True,则执行循环体中的,则执行循环体中的语句,当执行到语句,当执行到Loop语句时,返回到语句时,返回到Do While语句,继续语句,继续判断条件表达式的值是否为判断条件表达式的值是否为True,如此反复执行,直到条件,如此反复执行,直到条件表达式的值为表达式的值为False才退出循环。其流程图如图所示。才退出循环。其流程图如图所示。图 Do whileLoop语句流程 Do、Loop、Whil
9、e都是关键字,都是关键字,Do While和和Loop应成对应成对出现;出现;条件表达式为关系或逻辑型,若为数值型,以条件表达式为关系或逻辑型,若为数值型,以0表示表示False,非非0表示表示True;Do WhileLoop语句是先判断条件后执行循环体,有可能语句是先判断条件后执行循环体,有可能一次也不执行;一次也不执行;遇到遇到Exit Do语句时,将强制提前结束循环,执行语句时,将强制提前结束循环,执行Loop后的后的下一条语句,该语句允许在循环体内出现一次或多次。下一条语句,该语句允许在循环体内出现一次或多次。Do WhileLoop语句语句Do Loop While语句语句Do E
10、xit DoLoop While首先执行一次循环体内的语句,执行到首先执行一次循环体内的语句,执行到Loop while语句时,语句时,判断条件表达式的值是否为判断条件表达式的值是否为True。若为。若为True,则返回到循环,则返回到循环体的开始语句,再次执行循环体,这样一直到条件表达式的体的开始语句,再次执行循环体,这样一直到条件表达式的值为值为False时才退出循环。其流程图如图所示。时才退出循环。其流程图如图所示。图 DoLoop while语句流程 Do UntilLoop语句语句 Do Until Exit Do Loop首先判断条件表达式的值是否为首先判断条件表达式的值是否为Fa
11、lse。若不是,则退出循。若不是,则退出循环,执行环,执行Loop后面的语句。若是后面的语句。若是False,则执行循环代码,则执行循环代码,当执行到当执行到Loop语句时,返回到语句时,返回到Do Until语句,继续判断条件语句,继续判断条件表达式的值是否为表达式的值是否为False,如此反复执行,直到条件表达式的,如此反复执行,直到条件表达式的值为值为True才退出循环。其流程图如图所示。才退出循环。其流程图如图所示。图 Do UntilLoop 语句流程 Do Loop Until语句语句 Do Exit Do Loop Until 首先执行一次循环体内的语句,执行到首先执行一次循环体
12、内的语句,执行到Loop Until 语句时,语句时,判断条件表达式的值是否为判断条件表达式的值是否为False。若为。若为False,则返回到循,则返回到循环体的开始语句,再次执行循环体,这样一直到条件表达式环体的开始语句,再次执行循环体,这样一直到条件表达式的值为的值为True时才退出循环。其流程图如图所示。时才退出循环。其流程图如图所示。图 Do Loop Until语句流程 5.1.2 DoLoop结构结构编写程序在文本框中显示编写程序在文本框中显示1100之间既能被之间既能被3整除又能被整除又能被7整整除的整数,并计算它们的和。要求用除的整数,并计算它们的和。要求用DoLoop Wh
13、ile和和DoLoop Until两种语句分别编写循环体部分。运行界面如两种语句分别编写循环体部分。运行界面如图所示。图所示。对象属性属性值标签1(名称)ShowLabel1Caption1-100之间能被3和7整除的数有:标签2(名称)NumLabelCaption标签3(名称)ShowLabel2Caption它们的和是:标签4(名称)SumLabelCaption命令按钮(名称)ComputeCmdCaption显示并求和表5-2例5-3主要界面对象的属性设置值用用DoLoop While语句编写循环体部分程序代码如下:语句编写循环体部分程序代码如下:Private Sub Comput
14、eCmd _Click()Dim n As Integer,s As IntegerDim t As Stringn=1s=0t=DoIf n Mod 3=0 And n Mod 7=0 Thent=t&Str(n)t=t&,s=s+nEnd Ifn=n+1Loop While n 100NumLabel.Caption=tSumLabel.Caption=sEnd Sub5.1.2 DoLoop结构结构编写程序求满足不等式编写程序求满足不等式1+2+3+nS的最大的最大n,其中,其中S的值的值从文本框中输入。窗体上有从文本框中输入。窗体上有3个标签、个标签、1个命令按钮和个命令按钮和1个文本
15、个文本框,运行界面如图所示。框,运行界面如图所示。对象属性属性值窗体Caption求最大n值标签1(名称)SLabelCaptionS:标签2(名称)NLabelCaption标签3(名称)ResultLabelCaption文本框(名称)STextCaption命令按钮(名称)ComputeCmdCaption计算表5-3例5-4主要界面对象的属性设置值编写编写“计算计算”命令按钮的单击事件过程代码。命令按钮的单击事件过程代码。Private Sub ComputeCmd()Dim n As Integer,sum As Integer,s As IntegerNLabel.Caption=
16、ResultLabel.Caption=s=Val(Text1.Text)n=0sum=0图图4-14 例例4-4的流程图的流程图If s=0 Then NLabel.Caption=输入有误!输入有误!ElseDo While sum=sn=n+1sum=sum+nLoopNLabel.Caption=最大的最大的n值为:值为:&n-1ResultLabel.Caption=1+2+3+.+&Str(n-1)&=&Str(sum-n)End IfEnd Sub5.2循环嵌套循环嵌套在一个循环体中含有另一个循环结构,这就构成了循环的嵌套。在一个循环体中含有另一个循环结构,这就构成了循环的嵌套。
17、以上几节介绍的循环语句都可以实现循环嵌套。两层的循环嵌以上几节介绍的循环语句都可以实现循环嵌套。两层的循环嵌套,称为二重循环,三层以上的循环嵌套,称为多重循环。套,称为二重循环,三层以上的循环嵌套,称为多重循环。(1)对于对于ForNext的循环嵌套,在每个循环中的控制变量要使用的循环嵌套,在每个循环中的控制变量要使用不同的变量名。不同的变量名。(2)内循环结构语句必须完整地嵌在外循环体中,不可交叉。内循环结构语句必须完整地嵌在外循环体中,不可交叉。DoLoop或或ForNext语句需成对使用,语句需成对使用,Visual Basic会给每个循会给每个循环结构结束语句环结构结束语句(Loop或
18、或Next)匹配最近的循环结构开始语句匹配最近的循环结构开始语句(Do或或For)。(3)多重循环执行时,外循环每重复执行一次,内循环则要完整地多重循环执行时,外循环每重复执行一次,内循环则要完整地执行其应重复的次数。执行其应重复的次数。打印如图所示的上三角的九九乘法表。打印如图所示的上三角的九九乘法表。5.2循环嵌套循环嵌套程序代码如下:程序代码如下:Private Sub Form_Click()Dim s As StringPrint Tab(45);九九乘法表九九乘法表Print Tab(45);=For i=1 To 9 For j=1 To i s=i&*&j&=&i*j Prin
19、t s;Spc(5);Next jPrintNext iEnd Sub找出找出100以内的所有素数,并按每个一行的格式输出。运行界以内的所有素数,并按每个一行的格式输出。运行界面如图面如图4-17所示。所示。5.2循环嵌套循环嵌套程序代码如下:程序代码如下:Private Sub Form_Click()Dim i As Integer,m As Integer,n As Integern=0For m=2 To 100i=2DoIf m Mod i=0 Then Exit DoEnd If i=i+1Loop While i=m Then Print m,n=n+1 If n Mod 5=0
20、 Then Print End IfEnd IfNext mEnd Sub1.常用属性常用属性(1)Columns属性属性(2)List属性属性(3)ListCount属性属性(4)ListIndex属性属性(5)Selected属性属性(6)Sorted属性属性(7)Text属性属性(8)MultiSelect属性属性(9)Style属性属性5.3 列表框与组合框列表框与组合框2.常用方法常用方法(1)AddItem方法方法格式:列表框名格式:列表框名AddItem,下标,下标说明:用于在列表框指定位置上添加一个新项目。如果下标省略,说明:用于在列表框指定位置上添加一个新项目。如果下标省略,
21、则把则把文本添加到列表框的尾部,下标范围从文本添加到列表框的尾部,下标范围从0到到ListCount-1。(2)Clear方法方法格式:列表框名格式:列表框名Clear说明:用于清除列表框中的全部内容。执行该方法后,说明:用于清除列表框中的全部内容。执行该方法后,ListCount重新被设置为重新被设置为0。(3)RemoveItem方法方法格式:列表框名格式:列表框名RemoveItem 说明:用于删除列表框中指定位置上的项目,下标必须小于说明:用于删除列表框中指定位置上的项目,下标必须小于ListCount-1,否则程序出错。,否则程序出错。5.3 列表框与组合框列表框与组合框3.事件事件
22、 列表框能够响应列表框能够响应Click事件和事件和DblClick事件。当选择列表框事件。当选择列表框中的项目时,将触发中的项目时,将触发Click事件,双击列表框中的项目时,将触事件,双击列表框中的项目时,将触发发DblClick事件。如果在事件。如果在Click事件中有代码,则事件中有代码,则DblClick事件事件将永远不会被触发,因为将永远不会被触发,因为Click事件是优先被触发的事件。事件是优先被触发的事件。5.3 列表框与组合框列表框与组合框窗体中有窗体中有1个标签,个标签,1个列表框和个列表框和2个命令按钮,界面设计如图个命令按钮,界面设计如图4-21所示。程序运行,列表框中
23、显示所示。程序运行,列表框中显示“北京北京”、“上海上海”、“天天津津”和和“重庆重庆”等城市名。单击等城市名。单击“添加添加”命令按钮,出现输入框,命令按钮,出现输入框,用户输入新的城市名,随即将该城市名添加到列表框中。在列表用户输入新的城市名,随即将该城市名添加到列表框中。在列表框中选中一项后,单击框中选中一项后,单击“删除删除”命令按钮,从列表框中删除所选命令按钮,从列表框中删除所选城市名。城市名。5.3 列表框与组合框列表框与组合框图5-21例5-7设计界面 操作步骤:操作步骤:(1)在窗体中添加所需控件,并按表)在窗体中添加所需控件,并按表4-4设置控件的属性。设置控件的属性。对象对
24、象属性属性属性值属性值窗体窗体Caption列表框列表框标签标签(名称)(名称)CityLabelCaption城市名称城市名称列表框列表框(名称)(名称)CityList命令按钮命令按钮1(名称)(名称)AddCmdCaption添加添加命令按钮命令按钮2(名称)(名称)DelCmdCaption删除删除(2)编写窗体的装载事件过程代码。)编写窗体的装载事件过程代码。Private Sub Form_Load()CityList.AddItem 北京北京CityList.AddItem 上海上海CityList.AddItem 天津天津CityList.AddItem 重庆重庆End Sub
25、(3)编写)编写“添加添加”命令按钮的单击事件过程代码。命令按钮的单击事件过程代码。Private Sub AddCmd_Click()Dim s As Strings=InputBox(请输入城市名请输入城市名,输入框输入框)CityList.AddItem sEnd Sub(4)编写)编写“删除删除”命令按钮的单击事件过程代码。命令按钮的单击事件过程代码。Private Sub DelCmd _Click()CityList.RemoveItem CityList.ListIndexEnd Sub窗体中有窗体中有3个标签,个标签,2个列表框和个列表框和2个命令按钮,界面设计如图个命令按钮,
26、界面设计如图4-25所所示。程序运行,左侧示。程序运行,左侧“待选城市待选城市”列表框中显示列表框中显示“北京北京”、“大连大连”、“天津天津”和和“苏州苏州”等一些城市名,等一些城市名,选中左侧列表框中的省会城市,单选中左侧列表框中的省会城市,单击击“添加添加”命令按钮,将其添加到命令按钮,将其添加到右侧的右侧的“省会城市省会城市”列表框中;当列表框中;当添加错误时,还可选中右侧的添加错误时,还可选中右侧的“省省会城市会城市”列表框中的城市选项,单列表框中的城市选项,单击击“还原还原”命令按钮,将该选项从命令按钮,将该选项从右侧列表框还原回左侧中列表框中。右侧列表框还原回左侧中列表框中。5.
27、3 列表框与组合框列表框与组合框图5-25例5-8设计界面 操作步骤:操作步骤:(1)在窗体中添加所需控件,并按表)在窗体中添加所需控件,并按表4-5设置控件的属性。设置控件的属性。对象对象属性属性属性值属性值窗体窗体Caption列表框的应用列表框的应用标签标签1(名称)(名称)StateLabelCaption请从左侧的城市中挑选出省会城市请从左侧的城市中挑选出省会城市添加到右侧的列表框中添加到右侧的列表框中标签标签2(名称)(名称)LeftLabelCaption待选城市待选城市标签标签3(名称)(名称)RightLabelCaption省会城市省会城市列表框列表框1(名称)(名称)Ci
28、tyList列表框列表框2(名称)(名称)ProCity命令按钮命令按钮1(名称)(名称)AddCmdCaption添加添加命令按钮命令按钮2(名称)(名称)RetCmdCaption还原还原(2)编写窗体的装载事件过程代码。(略)编写窗体的装载事件过程代码。(略)(3)编写)编写“添加添加”命令按钮的单击事件过程代码。命令按钮的单击事件过程代码。Private Sub AddCmd_Click()Dim s As String If CityList.ListIndex 0 Then MsgBox 请选择要添加的城市!请选择要添加的城市!Else s=CityList.Text ProLis
29、t.AddItem s CityList.RemoveItem CityList.ListIndex End If End Sub(4)编写)编写“还原还原”命令按钮的单击事件过程代码。(略)命令按钮的单击事件过程代码。(略)1.特有属性特有属性 (1)Style属性属性 (2)Text属性属性 获取组合框当前选定项目值的最简单最常用方法就是使用获取组合框当前选定项目值的最简单最常用方法就是使用Text属性。组合框在运行时属性。组合框在运行时Text属性都与最后文本框中显示属性都与最后文本框中显示的文本相对应。该文本既可以是选中的列表项目,也可以是的文本相对应。该文本既可以是选中的列表项目,也
30、可以是用户在文本框中输入的文本。用户在文本框中输入的文本。2.事件事件 组合框响应的事件与组合框响应的事件与Style属性有关。属性有关。Style=0时,能响应时,能响应Click、Change和和DropDown事件。事件。Style=1时,能响应时,能响应DblClick、Click和和Change事件。事件。Style=2时,只能响应时,只能响应Click和和DropDown事件。事件。5.3 列表框与组合框列表框与组合框组合框应用设计。程序执行时,能够改变添加到文本框中文组合框应用设计。程序执行时,能够改变添加到文本框中文字的字体、字号和字体颜色。运行界面如图字的字体、字号和字体颜色
31、。运行界面如图4-30所示,窗体所示,窗体中有中有3个组合框、个组合框、l个文本框、个文本框、3个标签和个标签和1个命令按钮。个命令按钮。5.3 列表框与组合框列表框与组合框图5-30 例5-9设计界面操作步骤:操作步骤:(1)在窗体中添加所需控件,并按表)在窗体中添加所需控件,并按表4-6设置控件的属性。设置控件的属性。对象对象属性属性属性值属性值窗体窗体Caption组合框的应用组合框的应用文本框文本框(名称)(名称)ShowTextTextVisual Basic程序设计程序设计标签标签1(名称)(名称)FontLabelCaption字体字体标签标签2(名称)(名称)SizeLabel
32、Caption字号字号标签标签3(名称)(名称)ColorLabelCaption字体颜色字体颜色组合框组合框1(名称)(名称)FontComboStyle1-Simple ComboText请选择请选择组合框组合框2(名称)(名称)SizeComboStyle0-Dropdown ComboText请选择请选择组合框组合框3(名称)(名称)ColorComboStyle2-Dropdown List命令按钮命令按钮(名称)(名称)ReCmdCaption清除清除(2)编写窗体的装载事件过程代码。(略)编写窗体的装载事件过程代码。(略)(3)编写鼠标单击字体组合框的事件过程代码。(略)编写鼠标
33、单击字体组合框的事件过程代码。(略)(4)编写鼠标单击字号组合框的事件过程代码。(略)编写鼠标单击字号组合框的事件过程代码。(略)(5)编写鼠标单击字体颜色组合框的事件过程代码。编写鼠标单击字体颜色组合框的事件过程代码。Private Sub ColorCombo _Click()If ColorCombo.Text=红色红色 Then ShowText.ForeColor=RGB(255,0,0)End IfIf ColorCombo.Text=绿色绿色 Then ShowText.ForeColor=RGB(0,255,0)End IfIf ColorCombo.Text=蓝色蓝色 The
34、n ShowText.ForeColor=RGB(0,0,255)End IfShowText.SetFocusEnd Sub(6)编写在字体组合框中从键盘输入新选项的事件过程代码。编写在字体组合框中从键盘输入新选项的事件过程代码。Private Sub FontCombo _KeyPress(KeyAscii As Integer)If KeyAscii=13 Then FontCombo.AddItem FontCombo.Text ShowText.FontName=FontCombo.TextEnd IfEnd Sub(7)编写在字号组合框中从键盘输入新选项的事件过程代码。编写在字号组
35、合框中从键盘输入新选项的事件过程代码。Private Sub SizeCombo _KeyPress(KeyAscii As Integer)If KeyAscii=13 Then SizeCombo.AddItem SizeCombo.Text ShowText.FontSize=SizeCombo.TextEnd IfEnd Sub(8)编写单击编写单击“清除清除”命令按钮的事件过程代码。命令按钮的事件过程代码。学生信息管理系统的输入成绩模块中,窗体运行如图学生信息管理系统的输入成绩模块中,窗体运行如图4-32所所示,这里使用到了本章所讲授的组合框。示,这里使用到了本章所讲授的组合框。5.
36、4综合实例综合实例图5-32“输入成绩”对话框(1)循环结构可以分为)循环结构可以分为“当型循环当型循环”和和“直到型循环直到型循环”。(2)本章讲述的循环语句中,有的是条件表达式成立执行循)本章讲述的循环语句中,有的是条件表达式成立执行循环体,而有些是条件表达式不成立执行循环体,一旦条件表环体,而有些是条件表达式不成立执行循环体,一旦条件表达式成立就退出循环体。达式成立就退出循环体。(3)循环嵌套时一定不要发生交叉。)循环嵌套时一定不要发生交叉。5.5本章小结本章小结(1)常用属性)常用属性List属性:属性:ListCount属性:属性:ListIndex属性:属性:Text属性:属性:Style属性:属性:(2)常用方法)常用方法AddItem方法:方法:Clear方法:方法:RemoveItem方法:方法:(3)最常用的事件:)最常用的事件:Click事件事件 5.5本章小结本章小结组合框的常用属性组合框的常用属性(除除MultiSelect、Selected属性外属性外)和方法和方法与列表框相同。与列表框相同。(1)特有属性)特有属性 Style属性:属性:Text属性:属性:(2)事件)事件Click事件事件 5.5本章小结本章小结谢 谢!