控件数组

合集下载

visualbasic程序设计教案:数组

visualbasic程序设计教案:数组

§3.6 数组数组是按一定顺序排列,具有相同类型的变量的集合。

VB中将数组分为静态数组和动态数组,静态数组在声明时必须指明数组的维数和变量的个数;动态数组在声明时仅定义数组的名称和类型,然后在执行程序的过程中,根据实际需要再用ReDim语句定义数组的维数及变量的个数,而且允许使用简单变量来进行数组中变量个数的定义。

数组的使用在管理信息系统软件的程序设计中有着不可替代的作用,离开数组的使用,某些程序的编制将会变得非常麻烦,甚至导致程序编制的失败,因此数组是程序设计人员必须熟悉和掌握的必备知识。

【教学要求】了解:数组的概念。

理解:静态数组和动态数组的区别;控件数组的作用。

掌握:数组的定义及使用方法;控件数组的应用。

【本节重点】动态数组的应用。

控件数组的应用。

【本节难点】动态数组的应用。

一、静态数组及声明1、一维数组一维数组的定义如下:Dim <数组名> ([下界To]上界) [As 类型]若缺省下界,系统默认为0。

例:Dim num(1 To 50)As Integer2、多维数组VB中数组的维数允许最多可达60维。

多维数组的定义格式如下:Dim <数组名>([下界1 To]上界1,[下界2 To]上界2……)[As 类型] 例:Dim A(12,50),C(10)As Double二、动态数组动态数组在声明时只定义数组名或数组名及类型,不指定大小,在执行程序的过程中,再根据需要用Redim语句重新定义数组的大小。

重新定义动态数组的语句格式如下:Redim <数组名>(下标1[,下标2……])注意:(1)Redim语句中的下标可以是已被赋值的变量。

(2)在过程中可多次使用Redim来改变数组的大小和维数。

(3)每次使用Redim语句都会使原数组中的数据丢失,如需要保留原数组数据,可用Preserve参数来保留,使用该参数只能改变最后一维的大小。

例:在程序运行时由操作者指定一个一维数组的变量个数,然后由计算机自动产生一组随机数存放到一维数组中,并将此组随机数在窗体上打印出来。

vb控件数组的使用

vb控件数组的使用

vb控件数组的使用VB控件数组是在Visual Basic开发环境中用于处理大量相似控件的一种技术。

通过创建控件数组,可以方便地对一组控件进行集成处理,从而提高代码效率。

下面将详细介绍控件数组的使用及其注意事项。

1、控件数组的声明与初始化在VB中,声明控件数组与普通变量的方法类似。

通过使用Dim语句,在程序代码中声明一个控件数组,例如:Dim myButton(10) as CommandButton这里创建了10个命令按钮的数组,可以直接操作数组元素,如:myButton(0).Caption="Button1"myButton(1).Caption="Button2"当然,你也可以使用For循环结构来初始化数组中的控件,如下所示:For i = 0 To 10Set myButton(i) = Controls.Add("mandButton", "Button" & i)myButton(i).Top = i * 25Next i上述代码使用For循环在窗体上添加了11个按钮,并将它们的Top 属性依次设置为0、25、50、75……。

2、控件数组的处理方法通过使用控件数组,可以对具有相同事件处理程序的一组控件进行集成处理。

比如,你可以使用For循环结构为这些控件注册事件,代码如下:For i = 0 To 10Set myButton(i) = Controls.Add("mandButton", "Button" & i)myButton(i).Top = i * 25AddHandler myButton(i).Click, AddressOf Buttons_ClickNext iPrivate Sub Buttons_Click()MsgBox "Clicked"End Sub这里,我们将11个按钮的Click事件都绑定到Buttons_Click事件处理程序,当任何一个按钮被单击时,都会产生一个被处理的事件。

第6章 数组

第6章 数组
结束
一维数组的引用 数组的引用通常是对数组元素的引用。 一维数组元素的表示形式为: 数组名(下标 下标) 数组名 下标 说明: (1)下标可以是整型常量或整型表达式。 (2)引用数组元素时,下标值应在数组声 明的范围之内。否则将会出错。 (3)一般通过循环语句及InputBox函数给 数组输入数据。数组的输出一般用Print 方法、标签或文本框实现。
结束
Public Sub Command1_Click() Dim score! (5) , aver!, i% aver = 0 For i = 1 To 5 score(i) = InputBox("请输入第 & i & "个学生的成绩 请输入第" 个学生的成绩") 请输入第 个学生的成绩 Label4.Caption = Label4.Caption & score(i) & Space(5) aver = aver + score(i) Next i aver = aver / 5 Label5.Caption = Label5.Caption & aver & Space(5) For i = 1 To 5 If score(i) > aver Then Label6.Caption = Label6.Caption & score(i) & Space(5) End If Next i End Sub
结束
再将A(1)分别与A(3)、…、A(10)比较,并 且依次作出同样的处理。最后,10个数中 的最小者放入了A(1)中。 第2轮:将A(2)分别与A(3)、…、A(10)比 较,并依次作出同第1轮一样的处理。最后, 第1轮余下的9个数中的最小者放入A(2)中, 亦即A(2)是10个数中的第二小的数。 照此方法,继续进行第3轮… …

VB程序设计第2版教学课件55控件数组

VB程序设计第2版教学课件55控件数组

2
控件数组建立方法
【控件数组的建立方法】
【方法1】利用为控件数组命名方法建立控件数组
① 在窗体上添加同一类型的多个控件。如:Text1、Text2…… ② 单击Text2,使其处于选定状态。 ③ 在属性窗口选择“名称”,即Name属性, 并修改控件名称,即:Text1,显示对话框, 单击“是”,则建立控件数组。 ④ 对要加到数组中的控件重复第②、③步, 输入与第③步相同的名称。
10个元素,随机产生10个3位整数放入控件数组Text1中,重新排 列这10个数,将其中的奇数放在前,偶数放在后,重排后的数据 放入Text2中。
界面设计
3
动态数组应用
代码设计
Dim n As Integer
Private Sub Command1_Click()
Dim i%
Randomize
n=0
2
【说明】
控件数组说明
① 控件数组建立后,只要改变一个控件的“名称”属性,即Name属 性,并将Index属性置为空(不是0),则该控件从控件数组中删除。 ② 建立了控件数组之后,控件数组中所有控件触发同一事件过程,由 事件过程根据不同的Index值执行不同的操作。
3
动态数组应用
【应用】建立2个数组控件Text1、Text2,每个数组控件具有
For i = 0 To 9
Text1(i).Text = Int(100 + Rnd * 900)
If Text1(i).Text Mod 2 <> 0 Then
n=n+1
Байду номын сангаас
'统计奇数个数
End If
Next i
End Sub

数组的基础知识 一维数组 二维数组 控件数组 动态数组

数组的基础知识 一维数组 二维数组 控件数组 动态数组

1.2 数组的维数
如果数组的元素只有一个下标,则称这个数组为一 维数组。 用两个下标来表示元素的数组称为二维数组。对于 可以表示成表格形式的数据,例如矩阵、行列式 等,用二维数组来表示是非常方便的。 根据问题的需要,我们还可以选择使用三维数组、 四维数组,甚至更多维的数组。在Visual Basic 中最多允许有60维数组。例如我们想表示空间上 的一个点P,其坐标有三个,分别是X轴、Y轴、 Z轴上的坐标,那么我们可以使用三维数组来表 示,数组的第一维表示X坐标,第二维表示Y坐标, 第三维表示Z坐标,如用P(x,y,z)来表示。
ReDim [Preserve] 数组名[(维数定义)][As 数据类型]……
5.3 相关知识
几点说明: (1) “上界”和“下界”可以是常量和有确定值的变量; (2)可以使用“ReDim”语句多次改变数组的数组元素个数和维 数,但不能改变这个数组的数据类型; (3)如果重新定义数组,则会删除它原有数组元素中的数据,并 将数值型数组元素全部赋0,将字符型数组元素全部赋空串; (4)如果要重定义后不删除原有数据,应在定义数组时增加 “Preserve”关键字,只能改变最后一维的上界,不可以改变 数组的维数。 (5)ReDim语句只能出现在过程中。 由上可知,动态数组声明时省略了括号中的下标,没有给定数组 的大小。使用时需要用“ReDim”语句重新指出其大小。使用 动态数组的优点是根据用户需要,有效地利用存储空间,是在 程序执行到ReDim语句时才分配存储单元,而静态数组是在程 返回 序编译时分配存储单元的
返回
2.1数列排序案例说明
该程序可以产生一个包含十个元素的随机整数序 列,通过运行代码可以求出这个数列中的最大 值、数列的平均值以及按升序排列,当按下 “插入新数据”按钮时,用户可以通过键盘输 入一个新的整数,构成一个包含11个元素的数 组,并且把新输入的整数按升序插入到正确的 位置,

浅谈VB中的控件数组及其应用

浅谈VB中的控件数组及其应用

界 面主 要足 由一 个 Fa e 件 和 1 r 控 m 5个命 令按 建 控件 数 组组成 。下 面重 点介 绍命 令按 钮 控件 数组 的创 建 方法 。 创 建命 令 按钮 控 件 数组 , 以在 设 计 时创 建 , 可 以在 运 可 也
行 时创 建 。 为 了方便起 见 . 文在 设计 时创 建 。 但 本 设计 时创 建 有二 种方 法 。第 一 种方 法 : 复制 已有 的命 令 按钮 控件 数 组 并将 其粘 贴 到窗体 上 。具 体操 作 步骤 为 :) 1 先在 窗体 的
Vo . . I5 No3
Ma 2 用
钟 绍 辉
( 沙洋师范专科 学校 计算机科 学与技 术系, 湖北 沙洋 480) 420
摘要 :控件数 组” V 6 “ 是 B. 0中一项 简单而 实用的技 术 , 通过 对控件 的简单拷 贝 、 贴 , 者 可以建立一 组 粘 开发 控件 , 些控件 具有相 同的类型和名称 , 这 共享事件集 。程 序开发 中利用该控件 可以优化代码 。
结束或进行新一轮游戏 ;1 5 如果不成功 , 重复 15步。经 —
分 析可 知 .要 编 写 的代 码并 不 复 杂 。但 如果 不用 控 件 数 组 。 用 1 命 令 按 钮 , 每 个 命 令 按 钮 都 要 编 写 一段 而 5个 则 相 似 的代 码 . 每 个 按钮 在 移动 时 很难 对 其 进行 定 位 , 且 但
控件数组是vb60中一项简单而实用的技术通过对控件的简单拷贝粘贴开发者可以建立一组控件这些控件具有相同的类型和名称共享事件集
维普资讯
第 5卷 第 3期 20 年 5 月 06
襄樊 职 业 技 术 学 院 学 报
J un l fX a ga c t n la dT c nc l olg o ra in fnVo ai a n e h ia l e o o C e

VBA中的控件数组

VBA中的控件数组

VBA中的控件数组VBA中的控件数组2009年2月28日评论发表评论大家都知道,和VB不一样,VBA中不能直接创建控件数组。

然而可以使用WithEvents来模拟相同的功能。

我们需要一个类来处理控件的事件,而每一个控件需要一个类实例。

对于不同控件的类实例,我们可以使用一个对象数组或者集合来实现。

这里使用按钮控件做为例子来介绍怎样在窗体和工作表中创建控件数组。

创建类创建控件数组之前,我们需要一个类来处理控件的事件。

在VBE窗口中,单击菜单&#8220;插入&#8221;-&gt;&#8220;类模块&#8221;,在属性窗口中将类的名称改为&#8220;cCB&#8221;。

在类模块中添加下面这一行:Private WithEvents m_CB As mandButton这样你就可以从代码栏的顶部左边下拉列表中选择m_CB并选择右边下拉列表中相应的事件。

完整的代码如下:Private WithEvents m_CB As mandButton' 初始化,将控件绑定到类Public Sub Init(ctl As mandButton)Set m_CB = ctlEnd Sub' 控件的Click事件Private Sub m_CB_Click()MsgBox "你点击了:" &amp; m_CB.CaptionEnd Sub' 注销类Private Sub Class_Terminate()Set m_CB = NothingEnd Sub窗体中的控件数组然后创建一个窗体,在窗体中添加两个CommandButton,将这两个按钮控件分别命名为cmd1和cmd2,然后在窗体中的初始化事件中添加代码如下:Private ctlCB(1 To 2) As cCB' 以对象数组保存类的实例Private Sub UserForm_Initialize()Set ctlCB(1) = New cCB' 将按钮cmd1赋给类的实例ctlCB(1).Init cmd1Set ctlCB(2) = New cCBctlCB(2).Init cmd2End Sub这里使用对象数组ctlCB(1 to 2)来保存类实例。

第六章 数组.

第六章 数组.

sc(i, j) = InputBox("输入sc(" &i & "," & j & ") 的值") Next j Next I
3、数组在内存中存放的顺序 数组在内存中存放时,首先变化的是最后一维的 下标,然后变化倒数第二维的下标…(按行存放)。 例如,数组A(4,3)在内存中的分配如下:
A(0,0) A(1,0)
其表示形式: A(1),A(6) X(1,1), X1(1,6), X(2,6)
Y(0,0,0), Y(1,2,5)
6.2 一维数组
一、 一维数组的声明 (无隐式声明)
形式:
Dim 数组名([<下界>to]<上界>)[As <数据类型>] 或: Dim 数组名[<数据类型符>]([<下界>to]<上界>) ‘ 声明了a数组有6个元素 数组元数的数据类型
二、 访问整个数组
对于数组中的各个元素,我们可以用数组名称 (索引值)进行访问。然而,是无法只用数组名称就 对所有的元素进行计算。
例如:要把数组中的各元素值都加上1 这是错误的! Dim X(4)
X=X+1 For I=0 to 4 x(i)=x(i) +1 这是正确的!
Next
无法对数组中的所有元素同时进行运算处理。 但是,可以一次“读取”整个数组本身。
6.4 数据排序与查找
数据交换
将A和B两个变量中的数值交换
A=B B=A Temp=A
A=B
B=Temp
一、选择排序
算法思想:
1)对有n个数的序列(存放在数组a(n)中),从中选 出最小(升序)或最大(降序)的数,与第1个数交 换位置;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在中使用控件数组控件数组是位于一个窗体上共享同一名称的一组同种类型控件。

普通控件仅使用名称就可以识别,而引用控件数组中的成员则需要同时使用名称和索引。

开发人员在Visual Basic 6.0 以及更早的版本中使用控件数组主要有以下三个理由:1. 在循环中访问数组中控件的属性。

2. 向窗体动态添加新控件。

3. 允许一个事件例程与多个控件连接。

控件数组的使用,极大的方便了开发人员。

然而,刚刚从Visual Basic6.0(以下简称VB6.0)过渡到Visual (以下简称)的初学者却发现,在中似乎不能使用控件数组了。

笔者仔细查阅了的MSDN文档发现,在 中,确实不再支持控件数组。

原因是,对事件模型作了很大的改动,引入了另外一种数据类型――控件集合模型,使控件数组没有存在的必要。

就像VB6.0 中的控件数组可以共享事件一样, 中的事件模型允许任何事件处理程序都可以处理来自多个控件的事件,这就允许创建属于不同类型但共享相同事件的控件组。

所谓控件集合是指包含在一个容器中的所有控件的总和,能够创建控件集合的容器有:Form、Panel、GropBox等。

程序运行时,可以通过访问容器的Control属性来得到该容器中的所有控件。

下面将演示如何通过控件集合来使用控件数组:一、直接使用Form容器的控件集合来使用控件数组:建立一个项目,在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完全不同;集合中的下标顺序是按照加入控件的顺序倒排的;中控件数组的特点让人稍感不适的是,控件数组的下标是按加入顺序的倒排续产生的,但程序员完全可以改变这个顺序:在代码编辑窗中点击“#Region " Windows 窗体设计器生成的代码”旁边的“+”号,代码展开后,找到如下代码:Me.Controls.Add(Me.Button1)Me.Controls.Add(Me.TextBox3)Me.Controls.Add(Me.TextBox2)Me.Controls.Add(Me.TextBox1)这个代码顺序就是控件数组的下标顺序,只要改变这个顺序就可以改变控件数组中每个以元素的下标。

在Form中构成控件数组非常方便,但也有一个小问题:一般来说,Form中的控件往往有很多种,系统建立控件集合的时候将会把其中的所有控件放在同一个集合中,这样一来,程序员在写代码的时候有可能将每一个控件的下标混淆,为了解决这个问题,可以用Panel容器来根据需要将某类控件建立成控件数组,也就避免了上述问题。

建立的方法非常简单:只需要在Form中添加一个Panel控件,然后将需要建立控件数组的控件加入其中即可,然后用:Panel.Control.Item(n)来访问其中的每一个控件。

二、用代码建立控件集合。

建立一个项目,在Form中添加三个TextBox和一个Button控件,在代码编辑窗口中输入如下代码:Dim TextboxArray As New ArrayList …定义一个数组例表Private Sub BiuldTextBoxArray() …过程用来将Form上的三个TextBox加入到数组例表中TextboxArray.Add(TextBox1)TextboxArray.Add(TextBox2)TextboxArray.Add(TextBox3)End Sub…让Form在启动的时候将三个TextBox控件加入到数组例表中,构成控件数组。

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.LoadBiuldTextBoxArray()End Sub…编写Button点击事件代码,利用控件数组访问三个TextBox控件Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickTextboxArray(0).text = "文本框第一个元素"TextboxArray(1).text = "文本框第二个元素"TextboxArray(2).text = "文本框第三个元素"End Sub运行工程,点击Button,发现三个TextBox都被修改了,效果和前面的方法一样。

三、在程序中动态添加控件数组。

前面定义的控件数组都是在设计阶段完成的,它要求,控件数组中的控件数量必须已知,也叫静态控件数组;但很多时候要求,控件数组中的控件数量要用程序的某些运行情况来确定,这就要求,控件数组中的控件要能实现动态添加。

建立一个工程,在Form上添加两个Button,其中,Button1用来添加动态控件数组;Button2用来修改数组中每个控件的属性。

在代码编辑窗口中输入如下代码:Dim List As New ArrayList …定义一个例表对象,用来集合数组控件Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickDim i As IntegerFor i = 0 To 4 …利用循环语句动态加入控件数组。

Dim FirstTextBox As New TextBox …定义文本框对象Me.Controls.Add(FirstTextBox) …将一个文本框控件加入到Form上List.Add(FirstTextBox) …将文本框控件加入到例表集合中List.Item(i).top = i * List.Item(i).height + 20 …修改新加入控件在Form上的位置List.Item(i).left = 100FirstTextBox.TabIndex = i …修改新加入控件的TabIndex值List.Item(i).text = "TextBox" &i.ToString …修改默认文本。

NextEnd Sub用循环来访问动态控件数组中的控件。

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.ClickDim i As IntegerFor i = 0 To 4List.Item(i).text = "第" &i.ToString& " 个元素"NextEnd Sub运行项目,先点击Button1,Form上将出现5个文本框,然后再点击Button2,修改这五个文本框的Text 属性。

从这个实例看出,中动态加入控件数组与在VB6.0中实现动态数组有一个显著的不同:VB6.0中必须要有一个静态的“控件种子”,而在中已经不需要了。

四、控件数组的事件响应。

控件数组的最重要的特色之一就是让一组控件响应同一个事件,在事件例程中接收控件具体某控件的Index 值来分别处理处理具体问题,这点已经在VB6.0中表现得淋漓尽致了,它在中同样可以实现,只不过实现方式有了变化。

由于在容器中的每一个控件只要不作特殊处理,都会自动构成了控件集合,这样,只要对原有的事件例程作少量修改,就可以非常方便的实现用一个事件例程响应某个集合中所有控件产生的事件。

下面演示实现用同一个例程来处理两个Button和一个TextBox发出的Click事件。

建立一个项目,在Form上添加两个Button,和一个TextBox。

在代码编辑窗口中点击“#Region " Windows 窗体设计器生成的代码”旁边的“+”号,代码展开后,找到如下代码并调整为下面的顺序:Me.Controls.Add(Me.TextBox1)Me.Controls.Add(Me.Button1)Me.Controls.Add(Me.Button2)输入如下代码:Private Sub mControl_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, TextBox1.ClickSelect Case sender.tabindexCase 0MessageBox.Show("你点击了Button1 按钮")Case 1MessageBox.Show("你点击了Button2 按钮")Case 2MessageBox.Show("你点击了TextBox1 按钮")End SelectEnd Sub在这段代码中:Private Sub mControl_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Button1.Click, Button2.Click, TextBox1.Click 是一个自定义事件,在Handles 后面的语句表示:该例程将响应Button1, Button2, TextBox1控件发出的Click事件,如果还有其他控件,也可以放在后面,每一个控件名称用“,”号隔开。

相关文档
最新文档