VB控件数组的操作技巧

VB控件数组的操作技巧
VB控件数组的操作技巧

VB控件数组的操作技巧

控件数组有在设计时设置好的,也有在运行中创建的。控件数组一方面使得程序简洁、令代码易于维护,另一方面能使程序具有灵活性。可见,科学地利用控件数组可使编程工作的效率更高。本文是从笔者回答网友的问题中整理出来的,与原来的回答相比略有改动。希望这些"技巧"对大家有些帮助。如有不妥之处,敬请指教。

一、运行中设置数组控件的属性

设窗体上有若干个以 Command1 命名的命令按钮,现要求:点击其中一个按钮后,该按钮不可用,而其它的按钮均可用。以下几行代码可以实现这个要求,比一个一个的设置高效得多。

Private Sub Command1_Click(Index As Integer)

Dim i As Integer '计数器

Dim comNum As Integer '按钮的索引号

comNum = 0

For i = 0 To Command1.Count - 1

comNum = comNum + 1

If comNum > Command1.Count - 1 Then comNum = 0

Command1(comNum).Enabled = True '让所有按钮可用

Next

Command1(Index).Enabled = False '让被单击按钮不可用

End Sub

二、运行中添加和卸载数组控件

窗体上已有一个文本框Text1,程序需要在运行时动态地创建若干文本框,可这样实现:

1.首先,设计时给Text1的Index属性设置为"0",这一步很重要:有了索引号才能创建数组控件;

2.编写代码:[之前请给工程添加两个命令按钮,Name属性取缺省值,Caption属性分别为:添加、卸载]

Private Sub Command1_Click()

Dim txtNum As Integer 'Text1的Index号

Dim Num As Integer '赋给各TextBox的值

txtNum = 0 '初值

Num = 1 '初值

Text1(0).Text = "Text" & Num '第一个Text1的值

Dim i As Integer '计数器

For i = 0 To 4 '添加五个TextBox

txtNum = txtNum + 1

Num = Num + 1

Load Text1(txtNum) '加载文本框

Text1(txtNum).Top = Text1(txtNum - 1).Top + 450 '设置位置

Text1(txtNum).Text = "Text" & Num '加载内容

Text1(txtNum).Visible = True '令其可见:不能漏

Next

Command1.Enabled = False

Command2.Enabled = True

End Sub

Private Sub Command2_Click()

Dim i As Integer, N As Integer

N = 0

For i = 1 To Text1.Count - 1

N = N + 1

Unload Text1(N)

Next

Command1.Enabled = True

Command2.Enabled = False

End Sub

三、给运行中添加的数组控件命名并编写事件

其实例二已经给数组控件命了名,只是简单了些。本例将文件夹"F:\Txt"下的所有.txt的文件名作为菜单的Caption添加到菜单项里[请事先建立此文件夹并拷贝一些.txt文件,或者更改代码],当点击这些菜单,程序将调出Windows的记事本打开相应的文件。

键入以下代码前请启动VB的菜单编辑器,建立一个父菜单

项[Naem和Caption属性任意],然后在此父菜单下建立一个子菜单,Name属性为"mnuFiles",Caption属性为"没有文件"。

Dim MyPath As String '路径名变量

'添加并命名菜单过程

Private Sub AddMenu()

Dim MenuNum As Integer '菜单索引号变量

Dim MyFiles As String '文件名变量

MenuNum = 0 '初值

MyFiles = Dir(MyPath + "*.txt") '仅查找文本文档

If MyFiles = "" Then Exit Sub '为空则退出过程

mnuFiles(0).Caption = MyFiles '给第一个菜单命名

Do Until MyFiles = ""

MyFiles = Dir()

If MenuNum = 0 Then MenuNum = 1

MenuNum = MenuNum + 1

Load mnuFiles(MenuNum) '加载菜单

mnuFiles(MenuNum).Visible = True '设置为可见:不能漏mnuFiles(MenuNum).Caption = MyFiles

If mnuFiles(MenuNum).Caption = "" Then Unload mnuFiles(MenuNum)

'若菜单名为空则卸载掉

Loop

End Sub

Private Sub Form_Load()

MyPath = "F:\Txt\" '规定路径

Call AddMenu '执行添加菜单过程

End Sub

Private Sub mnuFiles_Click(Index As Integer)

Dim ret As String

'用Windows的记事本打开文件:注意中间的空格不能少

ret = "Notepad.exe" & " " & MyPath & mnuFiles(Index).Caption

Shell ret, vbNormalFocus

End Sub

四、控件在窗体上的排列问题

曾有一位网友两次问土人怎样才能在窗体上添加100万个文本框。呵呵,这要多大的显示器才能显示出来呀!不过,添加的数组控件多了,排列确实是个问题。下面的例子给窗体添加499个Label控件,连同事先绘制好的Index号定义为0的控件,总共有500个,能在窗体上从左到右、从上到下整齐地排列。程序运行时要花些许时间。

Option Explicit

Private Sub Form_Load()

Me.Width = 6800

Me.Height = 6000

Me.Caption = "添加标签演示"

With Label1(0)

.Top = 0

.Left = 120

.Height = 200

.Width = 300

.Caption = ""

End With

AddLabels

End Sub

Private Sub AddLabels()

Dim i As Integer '计数器

Dim Num As Integer 'Label的Index号Dim k As Integer '判断是否满行

Dim n As Integer '行数计数器

Num = 0

k = 0

n = 0

Label1(0).Caption = Num + 1

For i = 1 To 499

Num = Num + 1

Load Label1(Num) '加载Label控件

Select Case k

Case 0

Label1(Num).Left = Label1(Num - 1).Left + Label1(0).Width + 20

If Num = 20 Then n = n + 1: k = n

Case n

Label1(n * 20).Left = 120

Label1(n * 20).Top = Label1(0).Height * n

Label1(Num).Top = Label1(0).Height * n

Label1(Num).Left = Label1(Num - 1).Left + Label1(0).Width + 20

If Num = (n + 1) * 20 Then n = n + 1: k = n

End Select

Label1(Num).Caption = Num + 1

Label1(Num).Visible = True

Next

End Sub

一个问题的实例

回答人的补充 2009-12-14 14:10

后面那代码,是告诉你什么情况用Select Case。

那就不能这样做了,2个的index是不同的,改为:Private Sub Command1_Click()

Dim i, r, s As Integer

Dim p As Long

For i = 0 To 2

If Option1(i).Value Then

Select Case i

Case 0: s = 100

Case 1: s = 120

Case 2: s = 160

End Select

End If

Next

For i = 0 To 3

If Option2(i).Value Then

Select Case i

Case 0: r = 3000

Case 1: r = 3000 * 1.1

Case 2: r = 3000 * 1.2

Case 2: r = 3000 * 1.3

End Select

End If

Next

p = r * s

Label1.Caption = "根据所选房价应为:¥" & p

End Sub

1.将多个控件取相同的名称

具体操作步骤是:

1)绘制或选择要作为一个控件数组的所有控件,必须保证它们为同一类型的控件。

2)决定哪一个控件作为数组中的第一个元素,选定该控件并将其Name属性值设置成数组名(或使用其原有的Name属性值)。

3)将其他控件的Name属性值改成同一个名称。这时,

Visual Basic会显示一个对话框,要求确认是否要创建控件数组,选择“是”则将控件添加到控件数组中。

例如,若原有三个文本框Text1、Text2、Text3,要将它们设置成控件数组,数组名称为TT,则选择第一个文本框Text1,将其Name属性修改成TT,然后再选择Text2,再将其Name属性改成TT,这时会出现下图所示的对话框,单击“是(Y)”按钮将Text2添加到控件数组中。在属性窗口中可以看出原Text1和Text2文本框的名称都变成了TT。同样将Text3的名称也改成TT,这时不再出现提示对话框,而直接将Text3的名称改成TT。观察各控件的属性窗口中的Index属性,其值分别变成了0、1、2(即控件数组元素的索引)。

图通过修改控件名称建立控件数组

用这种方法建立的控件数组元素仅仅具有相同的Name 属性和控件类型,其他属性与最初绘制控件时的值相同。

2.复制现有的控件,并将其粘贴到所在容器中

具体操作步骤是:

1)在容器(如窗体)中绘制或选择要作为控件数组的第一个控件。

2)选择“编辑”菜单中的“复制”命令(或单击标准

工具栏的“复制”按钮),然后选中容器,再在“编辑”菜单中选择“粘贴”命令(或单击标准工具栏的“粘贴”按钮)。Visual Basic同样会显示与上图类似的对话框,单击“是(Y)”按钮,确定要创建一个控件数组。

这时,绘制的第一个控件具有索引值0,而新粘贴的控件的索引值为1。以后可以继续使用粘贴的方法向现有的数组中添加控件,只是不再出现提示对话框,直接将新粘贴的控件作为控件数组的下一个元素。每个新数组元素的索引值与其添加到控件数组中的次序相同。用这种方法添加控件时,大多数可视属性,例如高度、宽度和颜色,将从数组中第一个控件复制到新控件中。

3.给控件设置一个Index属性值

具体操作步骤是:

1)绘制或选择要作为控件数组的第一个控件。

2)在属性窗口中直接指定一个Index属性值(如设置为0)。

3)使用以上两种方法之一添加数组中的其他控件,这时不再出现提示对话框询问是否要创建控件数组。

建立了控件数组之后,可以通过修改Index属性值修改相应控件在数组中的位置。当然,必须保证同一个控件数组中的各元素的Index属性值是惟一的。

Visual Basic控件数组的使用示例---同时移动一组图形【例】创建图形控件数组S1,包含6个圆,当按下“移

动”按钮时,所有圆全部向下移动100缇,当移动到窗体底部时,返回窗体顶部。界面如下图所示。

图同时移动一组图形

分析:移动操作在单击“移动”按钮(设名称为Command1)时进行,因此,代码应写在“移动”按钮的Click事件过程中。这里要特别注意的是,“移动”按钮不是控件数组元素,因此,其事件过程不会返回Index参数值,也就是在其事件过程中不可以使用Index参数,这里可以用循环变量控制控件数组的索引,通过循环逐个移动图形。

“移动”按钮的Click事件过程如下:

Private Sub Command1_Click()

For I = 0 To 5

If S1(I).Top + S1(I).Height > Form1.ScaleHeight Then

' 当图形底部超过窗体底部时,将图形移回窗体顶部

S1(I).Top = 0

Else

' 当图形底部未超过窗体底部时,将图形向下移动

100缇

S1(I).Top = S1(I).Top + 100

End If

Next I

End Sub

对于不关心处理次序的控件数组,也可以使用For Each...Next循环进行处理,例如,上例移动图形无先后次序问题,程序可以改写成:

Private Sub Command1_Click()

For Each X In S1

If X.Top + X.Height > Form1.ScaleHeight Then X.Top = 0

Else

X.Top = X.Top + 100

End If

Next X

End Sub

VB .NET中控件数组的实现

https://www.360docs.net/doc/db10927542.html,中控件数组的实现 摘要:VB编程时,当要处理一组相同类型的控件的同一事件过程时,我们可以引入控件数组这一概念。如进行计算器程序编写时,可创建十个数字按钮的控件数组,共享同一事件过程。VB6升级到https://www.360docs.net/doc/db10927542.html,后,VB6控件数组的创建方法在.NET中不可用,本文总结了几种https://www.360docs.net/doc/db10927542.html,中使用控件数组的方法。 关键词:https://www.360docs.net/doc/db10927542.html,控件数组事件过程程序代码 一、关于控件数组 熟悉VB6编程的,对控件数组这一概念应该非常熟悉,它是VB6中的一项简单而非常实用的技术,是指具有相同名称的同类型的控件,共享同一事件。它的最大好处是:简化编程。但当我们把这一用法沿用到https://www.360docs.net/doc/db10927542.html,中来时,却发现无法实现。虽然https://www.360docs.net/doc/db10927542.html,中没有VB6中实现控件数组的方法,但在https://www.360docs.net/doc/db10927542.html,中控件数组的运用更加灵活了。 https://www.360docs.net/doc/db10927542.html,中,控件数组的创建不再是在设计时简单地将同类型的各个控件的Name属性值设置成同一名称就可以了,https://www.360docs.net/doc/db10927542.html,中,不公能够创建同类型的相同事件处理过程,还能够创建属于不同类型但共享相同事件的控件组。 二、https://www.360docs.net/doc/db10927542.html,中控件数组的实现 要在https://www.360docs.net/doc/db10927542.html,中实现控件数组这一机制,我们需要通过编写代码来完成,下面来介绍几种的方法,大家可以根据程序的需要进行选择。 1、使用Handles子句。 先将控件数组中各控件对象依次添加到窗体,然后创建其中一个对象的事件过程(执行部分先不写),再把其它对象的这一事件依次添加在后面,各事件过程名之间用逗号分隔开来。在事件过程的执行部分,如果需要引用这些对象,则要先给这些对象创建一个相同的名称。当要引用对象时,不再使用它们的Name属性值,而是新创建的名称。示例代码如下(部分内容省略): Label1_Click(ByVal sender…)Handles Label1.C lick,Label2.Click,Label3.Click Dim lbl As Label = CType(sender, Label) 当中,创建的是Label1的Click事件,在其后面,添加了Label2及Label3的Click 事件。事件过程中,通过一条Dim语句,定义三个标签具有相同的名称lbl,在下面的代码中,要设置或获取其中某一个标签的某个属性值时,直接使用名称lbl即可。这种方法实现起来最方便简单,以上实例中要求控件数组中控件类型相同,通过此方法,也可实现不同类型同一事件处理程序的共享,如具有同一功能的菜单项和工

vb控件数组的习题及答案

vb控件数组的习题及答案

电子教室学生注册时姓名文本框部分请输入:如:1411111111李四学号+姓名,中间不加空格) 实验准备: 请同学们删除d:\ex21 文件夹里面的内容 如果没有ex21文件夹,请在d:\ 下新建 ex21 文件夹 1、打开D:\下的工程文件PROJECTA4.vbp和窗体文件FORMA4.frm,按以 下要求完成程序:在窗体上创建2个列表框、2个标签、2个命令按钮。 List1用于显示可选课程、List2用于显示已选课程。单击“选课”按钮, 将List1中选定的课程名称加入到List2中显示,单击“清空”按钮,将 删除List2中的所有课程。程序运行的参考输出格式如图A-4所示,可选 课程至少包含图A-4所示的6门。最后将工程文件、窗体文件按原文件 名保存在D:\EX21文件夹下。 图A-4

2、打开D:\下的工程文件PROJECTB4.vbp和窗体文件FORMB4.frm,按以下要求完成程序:在窗体上创建1个列表框、1个图片框、2个标签、2个命令按钮。List1用于显示可选课程、Picture1用于显示已选课程。单击“选课”按钮,将List1中选定的课程名称加入到Picture1中显示,单击“清空”按钮,将删除Picture1中的所有课程。程序运行的参考输出格式如图B-4所示,可选课程至少包含图B-4所示的6门。最后将工程文件、窗体文件按原文件名保存在D:\EX21文件夹下。 图B-4

3、打开D:\下的工程文件PROJECTA41.vbp和窗体文件FORMA41.frm,按以下要求完成程序:单击窗体,能产生10个两位的随机整数并存放在一维数组中,并能在窗体中输出该10个随机整数、最大数及其在10个数中的位置,要求使用语句强制显式声明模块中的所有变量,程序运行的参考输出格式如图A-41所示。最后将工程文件、窗体文件按原文件名保存在D:\EX21文件夹下。 图A-41

【精选资料】VB控件 数组 过程复习题 参考答案2

常用标准控件作业 一、选择题 1.下列关于属性设置的叙述错误的是_______B__。 A.一个控件具有什么属性是Visual Basic预先设计好的,用户不能改变它 B.一个控件具有什么属性值是Visual Basic预先设计好的,用户不能改变它 C.一个控件的属性既可以在属性窗口中设置,也可以用程序代码设置 D.一个控件的属性在属性窗口中设置后,还可以再利用程序代码为其设置新值 2.以下过程是标签Label1的___A______事件。 Prviate Sub Label1_Click( ) End Sub A.单击 B.双击 C.拖拽 D.移动 3.下列控件中可设置滚动条是____C_____。 A.检查框(复选框) B.框架 C.文本框 D.标签框 4.标签所显示的内容,由___C______属性值决定。 A. Text B. Name C. Caption D. Alignment 5.定时器的定时间隔单位是__C_______。 A. 秒 B. 微秒 C. 毫秒 D. 分 6.检查框(复选框)的控件名称为______B___。 A. OptionBotton B. CheckBox C. PictureBox D. Image 7.若要求向文本框输入密码时,只在文本框中显示&号,则应当在此文本框的属性窗口中设置______D___。 A. Text属性值为& B. Caption属性值为& C. PasswordChar属性值为空 D. PasswordChar属性值为& 8.若要设置定时器的定时间隔,可通过__A_______属性来设置。 A. Interval B. Value C. Enabled D. Text 9.若要设置定时器的定时间隔设为5秒,应将Interval属性值设为_D________。 A. 5 B. 50 C. 500 D. 5000 10.若要使不可见命令按钮显示出来,可通过设置_____A____属性的值为True来实现。 A.Visible B.Enabled C.Default D.Value 11.若要使定时器起作用,应将其__D_______属性设置值设为True。 A.Interval B.Value C.Text D.Enabled 12.若要使命令按钮失效,可设置_____B____属性为False来实现。 A.Value B.Enabled C.Visible D.Cancel 13.若要向列表框新增列表项,可使用_____D____方法来实现。 A.Add B.RemoveItem C.Clear D.AddItem 14.要获得垂直滚动条Vscrollbar控件所能表示的最大值,可通过调用该控件的_____B____属性来实现。 A.Value B.Max C.Min https://www.360docs.net/doc/db10927542.html,rgeChange 15.要将命令按钮上的文字设置为“粗体”可通过设置__B_______属性值为True来实现。 A.FontItalic B.FontBold C.FontUnderline D.FontSize 16.要将命令按钮上的文字设置为“斜体”可通过设置____A_____属性值为True来实现。 A.FontItalic B.FontBold C.FontUnderline D.FontSize 17.要将命令按钮上的字体设为“隶书”,可设置______C___的属性为“隶书”。 A.FontBold B.BackItalic C.FontName D.FontSize 18.以下选项中,不属于单选按钮属性的是____D_____ A.Enabled B.Caption https://www.360docs.net/doc/db10927542.html, D.Min 19.组合框的风格可通过____C_____属性来设置。 A.BackStyle B.BorderStyle C.Style D.Sorted 20.标签的边框由_____C____属性的设置来决定。 A.BackColor B.BackStyle C.BorderStyle D.AutoSize 21.单选按钮的控件名称为____D_____。 A.Botton B.CheckBox C.PictureBox D.OptionBotton 22.单选按钮的当前状态可通过___A______属性来访问。 A.Value B.Checked C.Selected D.Caption 23.当滚动条中的滑块位置变化时,将触发其___C______事件。 A.LostFocus B.SetFocus C.Change D.GetFocus 24.假定Picture1和Form1分别为图片框和窗体的名称,以下语句___A______可清除图片框中的文本信息。 A.Picture1.cls B.Picture1.clear C.Form1.cls D.Form1.clear 25.确定一个窗体或控件的大小的属性是_____B____。 A.Width或Height B.Width和Height C.Top或Left D.Top和Left

控件数组

在https://www.360docs.net/doc/db10927542.html,中使用控件数组 控件数组是位于一个窗体上共享同一名称的一组同种类型控件。普通控件仅使用名称就可以识别,而引用控件数组中的成员则需要同时使用名称和索引。开发人员在Visual Basic 6.0 以及更早的版本中使用控件数组主要有以下三个理由: 1. 在循环中访问数组中控件的属性。 2. 向窗体动态添加新控件。 3. 允许一个事件例程与多个控件连接。 控件数组的使用,极大的方便了开发人员。然而,刚刚从Visual Basic6.0(以下简称VB6.0)过渡到Visual https://www.360docs.net/doc/db10927542.html,(以下简称https://www.360docs.net/doc/db10927542.html,)的初学者却发现,在https://www.360docs.net/doc/db10927542.html,中似乎不能使用控件数组了。笔者仔细查阅了https://www.360docs.net/doc/db10927542.html,的MSDN文档发现,在https://www.360docs.net/doc/db10927542.html, 中,确实不再支持控件数组。原因是,https://www.360docs.net/doc/db10927542.html,对事件模型作了很大的改动,引入了另外一种数据类型――控件集合模型,使控件数组没有存在的必要。就像VB6.0 中的控件数组可以共享事件一样,https://www.360docs.net/doc/db10927542.html, 中的事件模型允许任何事件处理程序都可以处理来自多个控件的事件,这就允许创建属于不同类型但共享相同事件的控件组。 所谓控件集合是指包含在一个容器中的所有控件的总和,能够创建控件集合的容器有:Form、Panel、GropBox等。程序运行时,可以通过访问容器的Control属性来得到该容器中的所有控件。 下面将演示如何通过控件集合来使用控件数组: 一、直接使用Form容器的控件集合来使用控件数组: 建立一个https://www.360docs.net/doc/db10927542.html,项目,在Form1中添加三个TextBox控件,名称分别为:TextBox1、TextBox2、TextBox3,一个Button控件。 双击Button,输入如下代码: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click …下面的语句是通过数组元素的下标来访问Form中的每一个元素。 Me.Controls.Item(0).Text = "集合中的第一个元素" Me.Controls.Item(1).Text = "集合中的第二个元素" Me.Controls.Item(2).Text = "集合中的第三个元素" Me.Controls.Item(3).Text = "集合中的第四个元素" End Sub 运行项目后,点击Button,看到的结果是:Form1中的所有控件(包括Button自己)的Text属性都被修改了,同时还发现,最后加入的的控件变成了集合中的第一个元素(下标为0)。这个结果说明: Form1中的所有控件已经自动构成了一个控件集合(控件数组),这个特点使得建立控件数组变得非常简单。 在访问这些控件时,除了可以通过控件名称直接访问外,还可以通过Contro.Item(n)属性按下标访问集合中的每一个控件; 集合中控件的类型可以不相同,这点和VB6.0完全不同; 集合中的下标顺序是按照加入控件的顺序倒排的; https://www.360docs.net/doc/db10927542.html,中控件数组的特点让人稍感不适的是,控件数组的下标是按加入顺序的倒排续产生的,但程序员完全可以改变这个顺序:在代码编辑窗中点击“#Region " Windows 窗体设计器生成的代码”旁边的“+”号,代码展开后,找到如下代码: Me.Controls.Add(Me.Button1) Me.Controls.Add(Me.TextBox3) Me.Controls.Add(Me.TextBox2) Me.Controls.Add(Me.TextBox1)

vb控件数组的习题及答案

电子教室学生注册时姓名文本框部分请输入:如:1411111111李四学号+姓名,中间不加空格) 实验准备: 请同学们删除d:\ex21文件夹里面的内容 如果没有ex21文件夹,请在d:\ 下新建ex21文件夹 1、打开D:\下的工程文件PROJECTA4.vbp和窗体文件FORMA4.frm,按以下 要求完成程序:在窗体上创建2个列表框、2个标签、2个命令按钮。List1 用于显示可选课程、List2用于显示已选课程。单击“选课”按钮,将List1 中选定的课程名称加入到List2中显示,单击“清空”按钮,将删除List2 中的所有课程。程序运行的参考输出格式如图A-4所示,可选课程至少包含 图A-4所示的6门。最后将工程文件、窗体文件按原文件名保存在D:\EX21 文件夹下。 图A-4

2、打开D:\下的工程文件PROJECTB4.vbp和窗体文件FORMB4.frm,按以下要求完成程序:在窗体上创建1个列表框、1个图片框、2个标签、2个命令按钮。List1用于显示可选课程、Picture1用于显示已选课程。单击“选课”按钮,将List1中选定的课程名称加入到Picture1中显示,单击“清空”按钮,将删除Picture1中的所有课程。程序运行的参考输出格式如图B-4所示,可选课程至少包含图B-4所示的6门。最后将工程文件、窗体文件按原文件名保存在D:\EX21文件夹下。 图B-4 3、打开D:\下的工程文件PROJECTA41.vbp和窗体文件FORMA41.frm,按以下要求完成程序:单击窗体,能产生10个两位的随机整数并存放在一维数组中,并能在窗体中输出该10个随机整数、最大数及其在10个数中的位置,要求使用语句强制显式声明模块中的所有变量,程序运行的参考输出格式如图A-41所示。最后将工程文件、窗体文件按原文件名保存在D:\EX21文件夹下。

VB数组的初始化

所谓数组的初始化,就是给数组的各元素赋初值,前一节已经介绍过赋值语句或inputbox函数为数组元素赋值,这两种方法都需要占用运行时间。影响效率。为此,visual basic 提供了array函数。利用该函数,可使数组在程序运行之前初始化,得到初值。Array 函数用来为数组元素赋值。即把一个数据读入某个数组。 其格式为: 数组变量名=array(数组元素值) 例如:static a as variant A=array(1,2,3,4,5) 意思就是把1,2,3,4,5这5个数值赋给数组A的各个元素。即a(0)=1,a(1)=2,a(2)=3,a(3)=4,a(4)=5。注意,在默认情况下(在没有option base 1的情况下),数组的下标从0开始,数组A有5个元素。 如果加上option base 1,数组的下标从1开始,那数组A也是有5个元素,只不过每个元素的值和上面的不一样,即变为了a(1)=1,a(2)=2,a(3)=3,a(4)=4,a(5)=5对于字符串数组,其初始化操作相同。 对array函数的几点说明 数组变量名 = array(数组元素值) 1、该函数只适用于一维数组,即只能对一维数组进行初始化,不能对二维数组或多维数组进行初始化。 2、声明数组变量时,只能声明为变体(variant)类型,而不能是其他具体的数据类型。 如dim a as variant 或dim a 是正确的。 而dim a as integer 或 dim a as string 是错误的。 3、在定义数组变量时,可以不经定义而直接使用。 控件数组的基本概念 控件数组则一组相同类型的控件组成,这些控件共用一个相同的控件名称,具有相同的属性,事件和方法。数组中的每一个控件都有一个唯一的索引号index即下标,来标识它们。在属性窗口,通过属性窗口中的index属性就可以设置相同类型控件的下标。 在程序中,当有若干个控件执行大致相同的操作时,控件数组是很用的。控件数组共享同样的事件过程。例如,假定一个控件数组含有3个命令按钮command1,则不管单击哪一个按钮,都会调用同一个click事件。如果要确定单击的是哪一个按钮。则要通过其index 属性(即下标值)来进行确认。其单击事件过程代码格式: Private sub command1_click(index as integer) …… End sub 和只有一个按钮command1单击事件过程 Private sub command1_click

vb控件数组的习题及答案

电子教室学生注册时姓名文本框部分请输入:如:11李四学号+姓名,中间不加空格) 实验准备: 请同学们删除d:\ex21 文件夹里面的内容 如果没有ex21文件夹,请在d:\ 下新建 ex21 文件夹 1、打开D:\下的工程文件和窗体文件,按以下要求完成程序:在窗体上创建2个列表框、2个标签、2个命令按钮。List1用于显示可选课程、List2用于显示已选课程。单击“选课”按钮,将List1中选定的课程名称加入到List2中显示,单击“清空”按钮,将删除List2中的所有课程。程序运行的参考输出格式如图A-4所示,可选课程至少包含图A-4所示的6门。最后将工程文件、窗体文件按原文件名保存在D:\EX21文件夹下。 图A-4 2、打开D:\下的工程文件和窗体文件,按以下要求完成程序:在窗体上创建1个列表框、1个图片框、2个标签、2个命令按钮。List1用于显示可选课程、Picture1用于显示已选课程。单击“选课”按钮,将List1中选定的课程名称加入到Picture1中显示,单击“清空”按钮,将删除Picture1中的所有课程。程序运行的参考输出格式如图B-4所示,可选课程至少包含图B-4所示的6门。最后将工程文件、窗体文件按原文件名保存在D:\EX21文件夹下。

图B-4 3、打开D:\下的工程文件和窗体文件,按以下要求完成程序:单击窗体,能产生10个两位的随机整数并存放在一维数组中,并能在窗体中输出该10个随机整数、最大数及其在10个数中的位置,要求使用语句强制显式声明模块中的所有变量,程序运行的参考输出格式如图A-41所示。最后将工程文件、窗体文件按原文件名保存在D:\EX21文件夹下。 图A-41

VB_数组与记录教学练习题

第八章数组与记录 教学要求: 掌握一维、二维数组的定义、引用、初始化,掌握静态和动态数组及其差别,掌握数组的基本使用方法:数组元素的输入、输出和赋值等,掌握使用For Each...Next语句操作数组元素的方法;掌握控件数组的定义、建立和使用,掌握排序算法。掌握记录类型及记录数组的概念、记录变量的初始化及引用。 知识点: 数组的定义、引用、初始化;静态和动态数组及其差别;For Each...Next语句;控件数组。 熟练数组“遍历”算法的设计规律,冒泡排序、快速排序算法,顺序查找、有序表对分查找、字符查找算法。 内容导航: 一、数组的概念 (一)数组的定义 在Visual Basic中,可以用4个语句来定义数组,这4个语句格式相同,但适用范围不一样。Dim用在窗体模块或标准模块中,定义窗体或标准模块数组;ReDim、Static可用于过程中;Public 用在标准模块中,定义全局数组。 Visual Basic 提供两种格式: 第一种格式: 一维数组Dim 数组名(下标上界) As 类型名称 二维数组Dim 数组名(第一维下标上界,第二维下标上界) As 类型名称 第二种格式: Dim 数组名([下界To] 上界[,[下界To]上界]……) Dim 数组名([下界To[上界[,[下界To]上界]……) (二)默认数组 在Visual Basic中,允许定义默认数组。默认数组就是数据类型为Variant(默认)的数组。在一般情况下,定义数组应指明其类型。 二、动态数组 (一)动态数组的定义 动态数组以变量作为下标值,在程序运行过程中完成定义,通常分为两步:首先在窗体层、标准模块或过程中用Dim或Public声明一个没有下标的数组(括号不能省略),然后在过程中用ReDim 语句定义带下标的数组。 ReDim 语句格式:

VB控件数组的操作技巧

VB控件数组的操作技巧 控件数组有在设计时设置好的,也有在运行中创建的。控件数组一方面使得程序简洁、令代码易于维护,另一方面能使程序具有灵活性。可见,科学地利用控件数组可使编程工作的效率更高。本文是从笔者回答网友的问题中整理出来的,与原来的回答相比略有改动。希望这些"技巧"对大家有些帮助。如有不妥之处,敬请指教。 一、运行中设置数组控件的属性 设窗体上有若干个以 Command1 命名的命令按钮,现要求:点击其中一个按钮后,该按钮不可用,而其它的按钮均可用。以下几行代码可以实现这个要求,比一个一个的设置高效得多。 Private Sub Command1_Click(Index As Integer) Dim i As Integer '计数器 Dim comNum As Integer '按钮的索引号 comNum = 0 For i = 0 To Command1.Count - 1 comNum = comNum + 1 If comNum > Command1.Count - 1 Then comNum = 0 Command1(comNum).Enabled = True '让所有按钮可用 Next Command1(Index).Enabled = False '让被单击按钮不可用

End Sub 二、运行中添加和卸载数组控件 窗体上已有一个文本框Text1,程序需要在运行时动态地创建若干文本框,可这样实现: 1.首先,设计时给Text1的Index属性设置为"0",这一步很重要:有了索引号才能创建数组控件; 2.编写代码:[之前请给工程添加两个命令按钮,Name属性取缺省值,Caption属性分别为:添加、卸载] Private Sub Command1_Click() Dim txtNum As Integer 'Text1的Index号 Dim Num As Integer '赋给各TextBox的值 txtNum = 0 '初值 Num = 1 '初值 Text1(0).Text = "Text" & Num '第一个Text1的值 Dim i As Integer '计数器 For i = 0 To 4 '添加五个TextBox txtNum = txtNum + 1 Num = Num + 1 Load Text1(txtNum) '加载文本框 Text1(txtNum).Top = Text1(txtNum - 1).Top + 450 '设置位置 Text1(txtNum).Text = "Text" & Num '加载内容

相关主题
相关文档
最新文档