第五章数组和自定义类型_第1页
第五章数组和自定义类型_第2页
第五章数组和自定义类型_第3页
第五章数组和自定义类型_第4页
第五章数组和自定义类型_第5页
已阅读5页,还剩97页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第5章 数组和自定义类型 5.1 数组的概念5.2 数组的基本操作和排序5.3 列表框和组合框控件5.4 自定义类型及其数组5.5 综合应用5.1 数组的概念 例5.1 求100个学生的平均成绩,并统计高于平均分的人数。用简单变量和循环,求平均成绩程序如下 aver = 0 For i = 1 To 100 mark =Val( InputBox(输入学生成绩) aver = aver + mark Next i aver = aver / 100问题(1)mark只能放一个学生的成绩,无法统计高于平均分的人数。(2)若用简单变量保存100个学生的成绩,则需定义100个变量和使用100句输入语

2、句 由此引入了数组 用数组解决问题的程序如下: Dim mark(99) As Integer Dim aver!, overn%, i% aver = 0 For i = 0 To 99 mark(i) =Val( InputBox(输入学生的成绩)) aver = aver + mark(i) Next i aver = aver / 100 overn = 0 For i = 0 To 99 统计高于平均分的人数 If mark(i) aver Then overn = overn + 1 Next i MsgBox (平均分: & aver & 高于平均分人数: & overn) ma

3、rk(99)mark(98)mark(2)mark(1)mark(0)数组: 不是一种数据类型,而是一组相同类型的变量的集合。作用:用一个数组名代表逻辑上相关的一批数据,用下标表示该数组中的各个元素,和循环语句结合使用,使得程序书写简洁。使用:必须先声明后使用Dim S(8)As Integer数组名下标S(0)S(1)S(2)S(3)S(4)S(5)S(6)S(7)类型例:Dim a(1 to 10) As Integer与上面声明等价形式: Dim a%(1 to 10) 1是下标的下界10是下标的上界数组元数的数据类型S(8)5.1.2定长数组声明一维数组 若一数组的元素只有一个下标,这

4、个数组为一维数组 Dim 数组名(下标下界 To 上界) As 类型说明:下标下界缺省为0,下标上界为常数。数组大小为:下标上界-下标下界+1。作用:声明了数组名、类型、维数、数组大小 在内存分配一块连续的区域。例:Dim a(10) As Integer a是数组名,一维数组、整形有11个元素、下标0-10 Dim St(-3To5) As String*3 St是数组名,一维数组、字符串类型、有9个元素、下标-35、每个元素最多存放3个字符例:Dim mark(99) As Integer 声明了一维定长整型数组mark 共有100个元素,下标范围为0 To 99mark数组的各元素是ma

5、rk(0),mark(1), mark(99)mark(i)表示由下标i的值决定是哪一个元素mark数组内存分配如下:mark(99)mark(98)mark(2)mark(1)mark(0)每个数组元素有一个唯一的顺序号,下标不能超出数组声明时的上、下界范围,否则会产生“下标越界”错误 数组元素的使用规则与同类型的简单变量相同mark(100)=156 下标越界例:Dim c(-2 To 2) As String*20数组元素为:c(-2) , c(-1) , c(0) , c(1) , c(2)每个元素存放20个字符的字符串在同一个过程中,数组名不能与变量名同名,否则会出错Private

6、Sub Form_DblClick() Dim a(5) Dim a a = 8 a(2) = 10 Print a, a(2)End Sub出错,数组名不能与变量名同名例:在窗体上画一个命令按钮,然后写如下事件过程 Private Sub Command1_Click() Dim a(5) As String For i = 1 To 5 a(i) = Chr(Asc(A) + (i - 1) Print a(i); Next i End Sub程序运行后,单击命令按钮,输出结果是A)ABCDE B)1 2 3 4 5 C)abcde D)出错信息 多维数组声明Dim 数组名(下标1下界 T

7、o 上界1, 下标下界2 To 上界2) As 类型下标个数决定了数组的维数数组的大小为每一维大小的乘积例 Dim x(2,4) As Long声明了一个长整型的二维数组 x;3行5列共占据35个长整型变量的空间 x(1,4)x(1,3)x(1,2)x(1,1)x(1,0) x(2,4)x(2,3)x(2,2)x(2,1)x(2,0) x(0,4)x(0,3)x(0,2)x(0,1)x(0,0) 第0行第1行第2行第0列第1列第2列第3列第4列例:Dim A (5) As Integer 6个元素一维数组 Dim Arr(-2 To 3) 6个元素一维数组 Dim Test(2,3) As I

8、nteger 3行4列二维数组 Dim A(0 To 8,0 To 3) 9行4列二维数组 Dim A(8,0 To 3) 9行4列二维数组 Dim (2,5,3) 3页6行4列三维数组注意:1.定义数组的和不能使用变量,必须是常量,数组元素可以用变量如:n=10 Dim x(n) As Single x(n)=352.数组定义和数组元素的区别 Dim x(10) As Integer x数组有11个元素 x(10) =100 对x(10)元素赋值Option语句格式: OPTION BASE n 功能:用来指定数组下标的默认下界 说明: n的值只能取0或1; 若要使用OPTION BASE语

9、句,只能出现在窗体层或模块层,必须将其放在数组定义之前,且一个模块内只能使用一次; 若定义的是多维数组,OPTION BASE 对每一维都有效。 例: Option Base 1 Dim a(20) As Integer 120,20个整形元素例: Option Base 1 Dim x(5 , 5) As String15行,15列25个元素,二维数组注意要注意区分“可以使用的最大下标值”和“元素个数” 例:Dim Arr(5) 不能通过Arr(6)来引用数组中的元素例下面数组声明正确的是_a)Dim A(5 6) As Integerb)Dim A(n, n) As Integerc)Di

10、m A(5, 6) As Integerd)Dim A5, 6 As Integer例:如下数组声明语句,则数组a包含的元素的个数有Dim a(3, -1 to 1, 6)a)84 b)54 c)11 d)18例:1个二维数组可以存放1个矩阵.在程序开始有语句Option Base 0,则下面定义的数组中正好可以存放1个4*3矩阵(即只有12个元素)的是 A)Dim a(-2 To 0,2) AS Integer B)Dim a(3,3) AS Ingeger C)Dim a(4,3)AS Ingeger D)Dim a(-1 To -4,-1 To -3)AS Ingeger 例:在窗体上划

11、一个名称为text1的文本框和一个名称为command1的命令按钮,然后编写如下事件过程:Private Sub command1_click()Dim array1(10, 10) As IntegerDim i, j As IntegerFor i = 1 To 3 For j = 2 To 4 array1(i, j) = i + j Next jNext iText1.Text = array1(2, 3) + array1(3, 4)End Sub程序运行后,单击命令按钮,在文本框中显示的值是A)12 B)13 C)14 D)15例:在窗体上划一个名称为command1的命令按钮Pr

12、ivate Sub command1_click() Dim i As Integer, j As Integer Dim a(10, 10) As Integer For i = 1 To 3 For j = 1 To 3 a(i, j) = (i - 1) * 3 + j Print a(i, j); Next j Print Next iEnd Sub程序运行后,单击命令按钮,窗体显示的是A)123 B)234 C)147 D)123 246 345 258 456 369 456 369 789例:在窗体上画一个命令按钮,其名称为Command1 Private Sub Command

13、1_Click() Dim a1(4, 4), a2(4, 4) For i = 1 To 4 For j = 1 To 4 a1(i, j) = i + j a2(i, j) = a1(i, j) + i + j Next j Next i Print a1(3, 3); a2(3, 3) End Sub 程序运行后,单击命令按钮,在窗体上输出的是 A)6 6 B)10 5 C)7 21 D)6 12 5.1.3 动态数组及声明 静态数组: 在编译时开辟内存区的数组叫做静态数组 Dim a(20) As Integer动态数组: 在运行时开辟内存区的数组叫做动态数组例:在窗体层声明如下: O

14、ption Base 1 Dim this( ) As String编写如下事件过程: Sub Command1_Click( ) ReDim this(4) this(2) = Microsoft Print this(2) ReDim this(6) this(5) = Visual Basic Print this(5) End Sub 建立动态数组要分两步:第一步:在窗体层、标准模块或过程中用Dim声明一个没有下标的数组(括号不能省略)Dim 数组名( ) As 数据类型第二步:在过程中用ReDim语句定义带下标的数组,给数组指定实际的元素个数ReDim 数组名 (下标1,下标2)例:

15、Dim s ( ) As Single Sub Form_Load( ) ReDim s(4,8) End Sub 22注意: Dim 是说明语句,可出现在程序的任何地方,而 ReDim 是执行语句,只能在过程中 在过程中可多次使用ReDim语句来改变数组的大小,但不能改变维数和类型每次使用ReDim语句都会使原来数组中值丢失,可以在ReDim后加Preserve 参数来保留数组中的数据。但此时只能改变最后一维的大小例: ReDim a(5 , 5 ,5 ) ReDim Preserve a(5 , 5 , 8)使用具有 Preserve 关键字的 ReDim 语句可改变数组大小而不丢失数组中

16、的数据只能改变元素的个数,不能改变数组的维数Sub Command1_Click( ) ReDim this(4) this(2) = “Microsoft” Print this(2) ReDim this(2,3) this(2,1) = “Visual Basuic” Print this(2,1) End Sub是错误的,不能改变数组的维数ReDim this(6) As Integer是错误的,也不能改变数组的类型 Option Base 1 Dim this( ) As String例5.2编一个程序,显示有n个数的非波那契数序列 1 2 3 5 8 13 21 34 55 每行显

17、示5个数Private Sub Command1_Click() Dim x( ) As Integer Dim n%, i% n = Val(InputBox(输入序列数) ReDim x(n - 1) x(0) = 1 x(1) = 1 For i = 2 To n - 1 x(i) = x(i - 1) + x(i - 2) Next i For i = 0 To n - 1 Print x(i), If (i + 1) Mod 5 = 0 Then Print Next iEnd Sub5.2 数组的基本操作1、数组的引用 数组的引用通常是指对数组元素的引用,其方法是:在数组后面的括号

18、中指定下标数组元素的引用形式:数组名(下标)例: x(8) , y(2,3), z%(3),x(3+4)、x(i)下标可以是:整型的常量、变量、表达式、数组元素例:a(8) = a(5) + a(3)例: “下标越界”的错误 Dim b%(10) b% (15) = 1002、数组元素赋初值 (1)使用循环语句 For i = 1 To 10 a( i ) = 0 Next i 将a数组的每个元素置为0说明:(1)数组变量名必须是变体类型(Variant)的合法变量名, 后面可加括号,也可省略;(2)数组元素各值之间以逗号分开;类型可以是Variant 变量可以表示任何类型的数据。数组的上界和

19、下界可以通过UBound和LBound函数获得 例: Option Base 1 Private Sub Command1_Click() Dim a( ) As Variant, b As Variant a = Array(1, 2, 3, 5, 6, 7) b = Array(One, Two, Three) Print a(3); b(2) End Sub(2)使用Array函数格式:数组变量名=Array(数组元素值)例:Option Base 1Private Sub Form_Click() Dim a As Variant, b As Variant a = Array(1,

20、2, 3, 4, 5, 6, 7) b = Array(One, Two, Three) For i = 1 To 7 Print a(i); Next i PrintFor i = 1 To UBound(b) Print b(i); ; Next i PrintEnd Sub例:在窗体上画一个命令按钮Option Base 1Private Sub Command1_Click() Dim a a=Array(1,2,3,4) j=1For i=4 To 1 Step -1 s=s+a(i)*j j=j*10Next iPrint sEnd Sub运行上面的程序,输出结果为A)1234 B

21、)12 C)34 D)4321Option Base 1Private Sub Command1_Click()Dim ArrArr=Array(43,68,-25,65,-78,12,-79,43,-94,72)pos=0neg=0For k=1 To 10 If Arr(k)0 Then Else End IfNext kPrint pos,negEnd Sub以上程序的功能是计算并输出数组Arr中10个数的正数之和pos与负数之和neg,填空。neg=neg+Arr(k)pos=pos+Arr(k)3、数组的输入 :通过TextBox控件InputBox函数输入Private Sub F

22、orm_Click()Dim s(3,4) As IntegerFor i = 0 To 3 For j = 0 To 4 s(i,j) = Val(InputBox(输入 & i &, & j & 元素) Next jNext iEnd Sub当数组较小,或者只需要对数组中指定元素赋值时,也可用赋值语句Option Base 1Dim stuname( ) As StringSub Form_Click( ) ReDim stuname(4) As String strname(1) = “Zhang” strname(2) = “Wang” strname(3) = “Li” strnam

23、e(4) = “Zhao”End Sub在Visual Basic 6.0中,可以使用一条赋值语句,将一个数组元素的值赋给另一个数组 Option Base 1 Private Sub Form_Click() Dim a As Variant, b( ) As Variant a = Array(1, 2, 3, 4, 5) b = a Print b(2) End Sub 例:以下定义数组或给数组元素赋值,正确的是 A)Dim a As Variant B) Dim a(10) As Integer a=Array(1,2,3,4,5) a=Array(1,2,3,4,5) C)Dim a

24、%(10) D) Dim a(3),b(3) As Integer a(1)= “ABCDE” a(0)=0 a(1)=1 a(2)=2 b=a344、数组的输出 本章目录数组元素可以在窗体或图片框中使用Print方法输出,也可以在多行文本框、列表框或组合框中输出。例:二维数组的输入和输出。假设有如下三行三列数据:1 2 3 4 5 6 7 8 9 利用InputBox函数输入上面数据,然后仍按原来的3行3列输出。 Option Base 1Private Sub Form_Click() Dim a(3, 3) As IntegerFor i = 1 To 3 For j = 1 To 3

25、a(i, j) = Val(InputBox(enter data:) Next j Next i For i = 1 To 3 For j = 1 To 3 Print a(i, j); ; Next j Print Next iEnd Sub例5.3 形成55的方阵,分别输出方阵中各元素、上三角和下三角元素 方阵规律:第一行的元素为04,以后每一行是前一行对应元素增加5上三角规律: 每一行的起始列与行号相同,只要控制内循环的初值 用Tab函数或Space定位控制输出的空格,Private Sub Form_Click() Dim sc%(4, 4) Picture1.Print 产生方阵数

26、据 For i = 0 To 4 For j = 0 To 4 sc(i, j) = i * 5 + j Picture1.Print Tab(j * 5); sc(i, j); Next j Picture1.Print Next i Picture2.Print 显示上三角数组元素 For i = 0 To 4 For j = i To 4 Picture2.Print Tab(j * 5); sc(i, j); Next j Picture2.Print Next i Picture3.Print 显示下三角数组元素 For i = 0 To 4 For j = 0 To i Pictu

27、re3.Print Tab(j * 5); sc(i, j); Next j Picture3.Print Next iEnd Sub385、求数组和、最值、位置及交换元素求元素和 通过循环将每个元素进行累加Private Sub Form_Click() Dim sc, sum As Integer sum = 0 sc = Array(10, 12, 11, 6, 5, 7, 19) For i = 0 To 6 sum = sum + sc(i) Next i Print sumEnd Sub 求数组中最小元素 假设第一个元素为最小,然后将该数与其他元素逐一比较,若发现小于最小值,就用新

28、值替换最小值,同时记录下标值。求最大值的方法与求最小值相似例5.4 求一维数组中各元素之和、最小数组元素,并将最小值数组元素与数组中第一个元素交换Private Sub Command1_Click() Dim a, i%, min%, imin%, sum%, t% a = Array(26, 43, 61, 87, 33, 19, 37, 59, 76, 69) min = a(0): imin = 0: sum = a(0) For i = 1 To UBound(a) sum = sum + a(i) If a(i) min Then min = a(i) imin = i End I

29、f Next i Print min, imin t = a(0): a(0) = a(imin): a(imin) = t Print 数组元素和=; sum, 最小元素值为:; a(0)End Sub406、数组排序排序是将一组数按递增或递减的次序排列,例如按学生的成绩、球赛积分等排序。排序的算法有许多,常用的有选择法、冒泡法等 (1)选择法排序基本思想:每次在若干个无序数中找最小(大)数,并放在相应的位置本章目录41例对于有n个数的数组,按递增次序排序的步骤:1) 从n个数中找出最小数的下标,出了内循环,最小数与第1个数交换位置;通过这一轮排序,第1个数已确定好。2) 除已排序的数外,其

30、余数再按步骤1)的方法选出最小的数,与未排序数中的第1个数交换位置。3) 重复步骤 2),最后构成递增序列。本章目录36-2912-34073211a(1) a(2) a(3) a(4) a(5) a(6) a(7) a(8) a(9) a(10)42例5.5 对已知存放在数组中的6个数,用选择法按递增顺序排序 原始数据8 6 9 3 2 7a(1)a(2)a(3)a(4)a(5)a(6)第1轮比较2 6 9 3 8 7a(2)a(3)a(4)a(5)a(6)第2轮比较2 3 9 6 8 7a(3)a(4)a(5)a(6)第3轮比较2 3 6 9 8 7a(4)a(5)a(6)第4轮比较2 3

31、 6 7 8 9a(5)a(6) 第5轮比较2 3 6 7 8 9本章目录Private Sub Command1_Click() Dim a(), iMin%, n%, i%, j%, t% a = Array(8, 6, 9, 3, 2, 7) n = UBound(a) For i = 0 To n - 1 iMin = i For j = i + 1 To n If a(j) a(j + 1) Then t = a(j): a(j) = a(j + 1): a(j + 1) = t End If Next j Next i For i = 0 To n Print a(i); Next

32、 iEnd Sub487、插入数据 插入数据基本思想是:1)首先查找待插入数据在数组中的位置k;2)然后从最后一个元素开始往前直到下标为k的元素依次往后移动一个位置;3) 第k个元素的位置腾出,将数据插入。本章目录例5.7在有序数组a中插入数值x Private Sub Form_Click() Dim a(), i%, k%, x%, n% a = Array(1, 4, 7, 9, 12, 23, 56) n = UBound(a) x = 14 For k = 0 To n If x n Then MsgBox (找不到此数据): Exit Sub For i = k + 1 To n

33、a(i - 1) = a(i) Next i n = n - 1 ReDim Preserve a(n) For i = 0 To n Print a(i); Next iEnd Sub例:矩阵转置将一个nm 的矩阵,的行和列互换。 a矩阵为: 转置后的矩阵为b:1 2 34 5 6a = 1 453 6b = Option Base 1Private Sub Form_Click()Dim a(2, 3) As Integer, b(3, 2) As Integer For i = 1 To 2 For j = 1 To 3 a(i, j) = Val(InputBox(输入a数组:) Ne

34、xt j Next i For i = 1 To 2 For j = 1 To 3 b(j, i) = a(i, j) Next j Next iPrint maxtrix a For i = 1 To 2 For j = 1 To 3 Print Tab(4 * j + 1); a(i, j); Next j Print Next i Print maxtrix b For i = 1 To 3 For j = 1 To 2Print Tab(4 * j + 1); b(i, j); Next j Print Next iEnd Sub例:有如下程序: Option Base 1 Priva

35、te Sub Form_Click() Dim arr, Sum Sum = 0 arr = Array(1, 3, 5, 7, 9, 11, 13, 15, 17, 19) For i = 1 To 10 If arr(i) / 3 = arr(i) 3 Then Sum = Sum + arr(i) End If Next i Print Sum End Sub 程序运行后,单击窗体,输出结果为 A)25 B)26 C)27 D)28 例:Option Base 1Dim arr() As IntegerPrivate Sub Form_Click() Dim i As Integer,

36、j As Integer ReDim arr(3, 2) For i = 1 To 3 For j = 1 To 2 arr(i, j) = i * 2 + j Next j Next i ReDim Preserve arr(3, 4) For j = 3 To 4 arr(3, j) = j + 9 Next j Print arr(3, 2) + arr(3, 4)End Sub 程序运行后,单击窗体,输入结果为 A)21 B)13 C)8 D)25例:在窗体上画一个名称为Command1的命令按钮 Option Base 1Private Sub Command1_Click() Di

37、m c As Integer, d As Integer,x d = 0 c = 6 x = Array(2, 4, 6, 8, 10, 12) For i = 1 To 6 If x(i) c Then d = d + x(i) c = x(i) Else d = d c End If Next i Print dEnd Sub 程序运行后,若单击命令按钮,则在窗体上输出的内容为 A) 10 B) 16 C) 12 D) 20例在窗体上画一个名称为Command1的命令按钮 Option Base 1 Private Sub Command1_Click() Dim a a=Array(1,

38、2,3,4,5) For i=1 To UBound(a) a(i)=a(i)+i-1 Next i Print a(3) End Sub程序运行后单击命令按钮则在窗体上显示的内容是A)4 B)5 C)6 D)7例窗体上画一个名称为Command1的命令按钮Option Base 1Private Sub Command1_Click() Dim a As Variant a=Array(1,2,3,4,5) Sum=0 For i=1 To 5 Sum=Sum+a(i) Next i x=Sum/5 For i=1 To 5 If a(i)x Then Print a(i) Next iEn

39、d Sub程序运行后单击命令按钮在窗体上显示的内容是A)1 2 B)1 2 3 C) 3 4 5 D)4 5例. 设有程序:Option Base 1Private Sub Command1_Click() Dim arr1, Max As Integer arr1 = Array(12, 435, 76, 24, 7, 54, 866, 43) = arr1(1) For i = 1 To 8 If arr1(i) Max Then Next i Print 最大值是: ; MaxEnd Sub以上程序的功能是:用Array函数建立一个含有8个元素的数组,然后查找并输出该数组中元素的最大值请

40、填空MaxMax = arr1(i)例:设有如下程序:Option Base 0Private Sub form_click() Dim a Dim i As Integer a = Array(1, 2, 3, 4, 5, 6, 7, 8, 9) For i = 0 To 3 Print a(5 - i); Next iEnd Sub程序运行后,单击窗体,则在窗体上显示的是A)4321 B)5432 C)6543 D)76545.3 列表框和组合框 列表框和组合框实质是一维字符串数组的使用, 直观显示其项目列表列表框:可显示多个选项供用户选择,不能直接修改其中的内容。组合框: 组合了文本框和

41、列表框的特性而形成的一种控件。组合框有3种式样。1、列表框(ListBox)主要属性属性类型说明属性值设置List字符数组存放列表项目值: List1.List(0) 第1个元素下标为:0属性窗口代码窗口ListIndex整型程序运行时被选定的项目的序号,未选中为-1, List1.ListIndex代码窗口ListCount整型列表框中项目的总数项目下标:0 ListCount-1代码窗口Sorted逻辑型决定在程序运行期间项目是否排序属性窗口Text字符型选定项目的文本内容List1. Text代码窗口Selected逻辑型数组列表框某项选中状态:选中为True否则为False代码窗口Mu

42、ltiSelect整型确定列表框是否容许多选0不能多选;1用鼠标单击或按空格键多选;2-Shift+Ctrl选定多个连续项属性窗口64(1) List :是一个集合如:大学计算机基础 VB程序设计 C/C+程序设计 多媒体技术及应用 数据库技术及应用 Web技术及应用第一个元素下表为0如:List1.List(0) 为“大学计算机基础”(2) ListIndex 选定项的序号(从0开始)例如图: List1.ListIndex的值为2(3) ListCount项目总数量 :例如图: List1.ListCount为6(4) Text 被选定的文本内容 List1.Text的值为“C/C+程序设

43、计”(5)Selected选中状态:List1.Selected(2)为TrueList1.Text 为 C/C+程序设计 List1.List(List1.ListIndex)等于List1.Text 等于List1.List(2)(2)、常用方法 AddItem方法:把一个项目加入列表框中 列表框对象.AddItem 项目字符串 ,索引值索引值:决定新增项在列表中的位置,省略则加在最后例:List1.AddItem “计算机, 2 RemoveItem方法:删除列表中索引值指定项目 列表框对象.RemoveItem 索引值例:List1.RemoveItem 2 Clear:清除列表框中所

44、有项目例如:List1.Clear 67(3)、重要事件列表框:Click、DblClick例5.9编写一个能对列表框进行项目添加、修改和删除的应用程序。 (1)在Form_Load事件中用AddItem方法添加若干项目(2)选定某项项目内容和下标自动在Label1显示(3)添加按钮将Text1输入的项目添加在列表框最后(4)删除按钮:对选定项目删除(5)清除按钮:清除列表框所有项目本章目录Private Sub Form_Load() List1.AddItem 大学计算机基础,0 List1.AddItem 程序设计,1 List1.AddItem C/C+程序设计,2 List1.Add

45、Item 多媒体技术及应用,3 List1.AddItem 数据库技术及应用,4 List1.AddItem Web技术及应用,5End SubPrivate Sub List1_Click() Label1 = List1.Text & 下标为: & List1.ListIndexEnd SubPrivate Sub Command1_Click() List1.AddItem Text1 Text1 = End SubPrivate Sub Command2_Click() List1.RemoveItem List1.ListIndexEnd SubPrivate Sub Command

46、3_Click() List1.ClearEnd Sub 例:在窗体上画一个列表框和一个命令按钮,其名称分别为List1和Command1,然后编写如下事件过程: Private Sub Form_Load() List1.AddItem Item 1“ List1.AddItem Item 2“ List1.AddItem Item 3“ End Sub Private Sub Command1_Click() List1.List(List1.ListCount) = AAAA“ End Sub 程序运行后,单击命令按钮,其结果为A)把字符串“AAAA”添加到列表框中,但位置不能确定B)把

47、字符串“AAAA”添加到列表框的最后(即“Item 3”的后面)C)把列表框中原有的最后一项改为“AAAA”D)把字符串“AAAA”插入到列表框的最前面(即“Item 1”的前面) 例:在窗体上画一个名称为List1的列表框,一个名称为Label1的标签,列表框中显示若干个项目。当单击列表框中的某个项目时,在标签中显示被选中项目的内容。下列能正确实现上述操作的程序是:A)Private Sub List1_Click() Label1.Caption = List1.ListIndexEnd SubB)Private Sub List1_Click() Label1.Name=List1.Li

48、stIndex End SubC) Private Sub List1_Click() Label1.Name=List1.Text End SubD) Private Sub List1_Click() Label1.Caption =List1.Text End Sub例: 在窗体上画一个名称为List1的列表框,为了对列表框中的每个项目都能进行处理,应使用的循环语句为A)For i=0 To List1.ListCount-1 NextB) For i=0 To List1.Count-1 NextC) For i=1 To List1.ListCount-1 NextD) For i=

49、1 To List1. Count-1 Next例. 设窗体上有一个列表框控件List1,且其中含有若干列表项。则以下能表示当前被选中的列表项内容的是A)List1.List B)List1.ListIndex C)List1.Index D)List1. Text 2. 组合框(ComboBox)重要属性ComboBox 控件将 TextBox 控件和 ListBox 控件的特性结合在一起(1)可以在控件的文本框部分输入信息,但必须通过AddItem方法将内容添加到列表框(2)可在列表框选择一项,选中项目同时在文本框显示ComboBox 控件有三种类型,由Style属性确定。Style =0

50、:下拉式组合框(文本框+下拉列表框)Style = 1:简单组合框(文本框+列表框)Style = 2:下拉式列表框(无文本框,只能显示选择不能输入)其余属性、方法、事件同ListBox例5.10编写一个使用屏幕字体、字号的程序 (1) 屏幕字体通过Screen对象的Fonts字符数组获得在Combo1显示,用户不能输入采用下拉式列表框(2)字号通过程序输入640磅偶数,在Combo2显示,用户可以输入奇数,采用下拉式组合框Private Sub Form_Load() For i = 0 To Screen.FontCount-1 Combo1.AddItem Screen.Fonts(i)

51、 Next i For i = 6 To 40 Step 2 Combo2.AddItem i Next iEnd SubPrivate Sub Combo1_Click() Label1.FontName = Combo1.TextEnd SubPrivate Sub Combo2_Click() Label1.FontSize = Combo2.TextEnd SubPrivate Sub Combo2_KeyPress(KeyAscii As Integer)If KeyAscii = 13 Then Label1.FontSize = Combo2.Text End IfEnd Sub

52、例:窗体上有1个名称为List1的列表框,1个Text1文本框,1个Label1、Caption属性为“Sum“的标签,1个Command1、标题为“计算”的按钮。程序运行后,把1100能够被7整除的数添加到列表框中。单击计算按钮,则对List1中的数进行累加求和,并在文本框中显示计算结果如图所示。能实现上述功能的程序请填空 Private Sub Form_Load()For i=1 To 100If i Mod 7=0 ThenEnd IfNext iEnd SubPrivate Sub Command1_Click()Sum=0For i=0 To Sum=Sum+ Next iText

53、1.Text=SumEnd SubList1.AddItem iList1.ListCount-1List1.List(i)例. 设组合框Combo1中有3个项目,则以下能删除最后一项的语句是A)Combo1.RemoveItem Text B)Combo1. RemoveItem 2 C)Combo1.RemoveItem 3 D)Combo1.RemoveItem Combo1.Listcount 例. 在窗体上画一个列表框、一个命令按钮和一个标签,分别为List1、Command1和Label1,通过属性窗口把列表框中的项目设置为:“第一个项目”、“第二个项目“、”第三个项目“、”第四个

54、项目“。程序运行后,在列表框中选择一个项目,然后单击命令按钮,即可将所选择的项目删除,并在标签中显示列表框当前的项目数,下面是实现上述功能的程序,请填空。 Private Sub Command1_Click()If List1.ListIndex = Then List1.RemoveItem Label1.Caption = Else MsgBox 请选择要删除的项目End If End Sub 0List1.ListIndex List1.ListCount例:在窗体上画一个Combo1的组合框,画Label1和Label2,属性分别为“城市名称”和空白的标签。程序运行后当在组合框中输入

55、一个新项后按回车键时,如果输入的项在组合框的列表中不存在则自动添加到组合框的列表中,并在Label2中 显示“已成功添加输入项”如图所示:若存在,则在Label2中显示“输入项已在组合框中” 请在空处将程序补充完整。Private Sub Combol_ (KeyAscii As integer) If KeyAscii13 Then For i0 To Combo1ListCount-1 If Combo1Text Then Label2Caption”输入项己在组合框中” Exit Sub End lf Next i Label2Caption“已成功添加输入项” Combo1 Combo

56、1Text End lf End SubKeyPressCombo1.List(i)AddItem例:如图所示,在列表框List1中已经有若干人的简单信息,运行时在Text1文本框(即“查找对象”右边)输入一个姓或姓名单击“查找”按钮,则在列表框中进行查找,若找到,则把该人的信息显示在Text2文本框中。若有多个匹配的列表项,则只显示第1个若未找到,则在Text2中显示“查无此人”。请填空。 Private Sub Command1_Click() Dim k As Integer, n As Integer, found As Boolean found = False n = Len( )

57、 k = 0 Do While k List1.ListCount And Not found If Text1 = Left(List1.List(k), n) Then Text2 = found = True End If k = k + 1 Loop If Not found Then Text2 = 查无此人 End If End Subtext1.textlist1.list(k)例5.11使用列表框实现排序、查找、删除(1)在Form_Load事件中用AddItem方法在列表框中自动 形成有序的数据项目(2)插入按钮将Text1输入的内容插入在列表框中仍保持有序(3)查找删除按钮:要删除的值由文本框输入的值决定(4)删除选定内容按钮:删除列表框中选定的项目Private Sub Fo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论