VB .NET中控件数组的实现
vb.net的数组列表(ArrayList)

的数组列表(ArrayList)的数组列表(ArrayList)现在除了数组的长度计数是基于0开始的这个变化外,还引进了一个数组列表(ArrayList)对象来代替原来的集合(Collection)对象,集合对象的长度计数总是从1开始的,而且在需要的时候,数组列表的长度可以是不定的。
数组列表的基本的方法和集合一样,只不过它还具有一些新的功能方法。
例如:Dim Arl As ArrayList '构建一个数组列表For j=0 to 10Arl.Add(j)Next j所有的数组变量都有一个长度属性,这样就可以得知这个数组有多大:Dim Z(20) As SingleDim j As IntegerFor j=0 to z.Length-1Z(j)=jNext j在中所有的数组都是动态的,可以在任何时候重新定义数组的长度,然而,在中已经没有ReDim Preserve表述了,可以使用New关键字来对任何一个数组进行引用,并且重新定位:'在类模块级声明Dim X() As Single'重新定位X=New Single(20){}注意:数组类型后面的大括号不要忘记写。
和集合对象一样,数组列表含有一个“Count”属性和一个“Item”属性,允许使用“index”来访问数组列表中的元素。
而且,和集合对象一样,这个属性也可以省略,感觉就像操作数组一样:For i=0 to ar.Count-1Console.WriteLine(ar.Item(i))console.WriteLine(ar(i))Next i下表为数组列表的一些方法:注意:本部分讲座的数组是程序中声明的变量数组,不同于控件数组。
控件数组是在设计时通过设置控件的“Index”属性规定的,变量数组总是连续的;与控件数组不同的是,不能从一个数组的中部加载或卸载数组元素。
一个数组中的所有元素具有相同的数据类型。
当然,当数据类型为“object”时,各个元素能够包含不同种类的数据(对象、字符串、数值等)。
vb控件数组

关于下标变量的规定: (1)下标变量在程序中的用法和简单变量的用法一样。 (2)由于程序必须写在一行上,而且字符一样大小, 所以下标要放在小括号内,如a(3)不能写成 a3, 后者将被当作简单变量处理。 (3) 下标可以是常数、数值变量、算术表达式甚至下 标变量。下标中如含有变量,使用前应给该变量提 前赋值。例如:当i=5时,a(i)表示a(5),a(i+3) 表示a(8);如果b(3)=5,则a(b(3))表示a(5)。 (4)下标变量的下标值应该为整数,否则计算机将对 下标进行自动取整。如a(3.2)将被视为a(3) ,a(3.7)将被视为a(-4)。
6.1.4 数组元素的存放
数组中的各个元素在内存中的存储是按照一定的规律, 占据着一片连续的存储区域。例如一维数组的存放顺序就 是它的下标顺序;而多维数组的元素的存放顺序遵照下述 规定:最后一个下标先变化,第一个下标最后变化(按行 存放)。例如二维数组的存放顺序是:先行后列 ,即先存 放第一行,然后再存放第二行,以此类推。对于一个二维 数组a(m,n)中的数组元素a(i,j)在顺序存放中的序号是 i*n+j。例如当下界为1时的一个二维数组a(2,3),它的存 放顺序是:a(1,1),a(1,2),a(1,3),a(2,1),a(2,2), a(2,3)。
6.2.2 数组的应用
1. 一维数组的应用 一维数组元素只有一个下标,只要下标值确定,元素在数组中的位置也就确定了。数 学上形如数列{ai}表示的数据均可用一维数组来处理。 【例6-2-1】使用数组计算1+2+3+…+100的值 Option Base 1 ' 设置下界自动为1 Private Sub Command1_Click() Dim a(100) As Integer Dim s As Integer For i = 1 To 100 a(i) = i ' 数组的产生 Next i s = 0 ' 累加器初始化 For i = 1 To 100 s = s + a(i) Next i Print "1+2+3+…+100="; s End Sub
Visual BasicNET程序设计第3章 数组对象

Dim a(4) As Integer 'a数组有5个元素 …… ReDim a(5) '重定义a数组为6个元 素 …… ReDim a(3) '重定义a数组为4个元 素
实际上一个用Dim定义过的数组可以 用ReDim语句多次改变它的大小,但注意 不能改变数据类型。 在用ReDim改变大小后,原来的数组 中的数据一般会丢失,如果要保持原来的 数据,则应加上Preserve说明,例如:
Dim f(10) As Single ' 定义能存储11 个Single数的数组,即f(0),f(1),…,f(10) Dim a(4) As Integer '定义能存储5个 整数的数组,即a(0),a(1),a(2),a(3), a(4)
如图3-1所示为Dim a(4) As Integer定 义的数组在内存中的分布图,共有5个元素, 它的每一个单元都是一个Integer整数,由 于一个Integer整数在计算机中占4个字节, 因此这个数组在计算机中占20个字节。
第3章 数组对象
3.1
一维数组
3.2动态数组3.3数组操作3.4
数组的排序与查找
3.5
多维数组
3.6
综合实例
本章将介绍程序语言的数组 对象,数组是数据结构中的一种重要类型, 数组在程序中应用十分广泛,通过本章的 学习,目的是要掌握中数组的程 序设计方法。
3.1 一维数组
3.3 数组操作
数组是计算机中数据存储的一种重要 结构,因为一般一组关联的数据总是一个 接一个地连续存储的,这种存储就是数组, 学习与掌握数组的操作对程序设计十分重 要。
巧用VB的控件数组

巧用VB的控件数组
王萍
【期刊名称】《电脑编程技巧与维护》
【年(卷),期】2000(000)010
【摘要】控件是可视化开发工具的重要对象之一。
在程序设计时通常会遇到具有相同性质的事件过程,如果为每个控件分别编写一段事件过程,则显得十分不经济且结构不合理。
在面向对象的程序设计中可采用将多个相同的控件定义为一个控件数组,这个控件数组内的每一个控件都可以共享程序代码。
这不仅减少了开发人员重复性劳动而且提高了程序的可读性。
通常建立控件数组方法有两种:第一种是在设计阶段时建立,属于静态方式;另一种是在执行阶段,动态地建立控件数组,也即在程序执行时建立。
为了避免内存的浪费常采用动态建立控件数组,就是在程序模块(module)内,先声明一个空的控件数组,等到要使用该控件数组时,再重新声明要使用的控件数组元素或数目。
控件数组可以动态生成和释放;并且控件数组对属性具有相同控制。
动态生成和释放控件数组是在运行时,用Load和Unload语句添加和删除控件数组中的控件。
【总页数】2页(P18-19)
【作者】王萍
【作者单位】无
【正文语种】中文
【中图分类】TP311.1
【相关文献】
1.巧用VB控件数组、菜单数组及动态特性 [J], 李建;徐璧华;王林
2.VB中控件数组及其应用 [J], 胡绪英
3.VB控件数组在游戏中的应用 [J], 张春明
4.巧用VB控件数组实现地理信息查询 [J], 邹刚
5.VB中控件数组及其应用 [J], 胡绪英
因版权原因,仅展示原文概要,查看原文内容请购买。
VBA中的控件数组

VBA中的控件数组VBA中的控件数组2009年2月28日评论发表评论大家都知道,和VB不一样,VBA中不能直接创建控件数组。
然而可以使用WithEvents来模拟相同的功能。
我们需要一个类来处理控件的事件,而每一个控件需要一个类实例。
对于不同控件的类实例,我们可以使用一个对象数组或者集合来实现。
这里使用按钮控件做为例子来介绍怎样在窗体和工作表中创建控件数组。
创建类创建控件数组之前,我们需要一个类来处理控件的事件。
在VBE窗口中,单击菜单“插入”->“类模块”,在属性窗口中将类的名称改为“cCB”。
在类模块中添加下面这一行: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 "你点击了:" & 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)来保存类实例。
Vb控件数组的建立与使用

在 窗 体 上 添 加 一 个 cm a d ut , 其 ci o m n b t n在 o l k事 件 中 编 程 . 体 c 具
维普资讯
20 0 7年第 1 期 1
福
建 电
脑
19 7
V b控 件数 组 的建立与使 用
居 晓琴
(南 通航 运 职 业技 术 学 院 江 苏 南 通 2 6 1 ) 20 0
【 摘 要】 :利ቤተ መጻሕፍቲ ባይዱ用控件数组 我们可以优化代码, 文主要 介绍 了在 v 本 b程序设 计 中不 同的阶段建 立控件数 组的方法 , 我们 可 以根据不 同情 况采 用不 同的方 法得 以实现 . v 用程序 开发提供 有力的参考。 为 b应 【 关键词】 b控件数组 静 态 动 态 菜单 :v
S b e mma d e e( dx s n gr u o n l l k n e t e i i aie )
_
2 修 改 每 个 控 件 的 nme 称 ) 性 , 之 相 同 , ) a ( 名 属 使 当修 改 第 二 个 控 件 的 nn al 性 时 。 统 显 示 一 个 对 话 框 。 问 是 否 创 建 控 e属 系 询 件 数 组 . 时只 需 要 选 ” ” 此 是 即可 。 需 要 注 意 的是 :b能 自动 把 第 一 个 控 件 的 idx属 性 设 置 v ne 为0 .其 后 每 个 控 件 元 素 的 dx属 性 按 其 加 入 的 顺 序 自动 设 ie n 置 。 法二建立控件数组 时 。 添加的控件元素仅 nm 方 所 a e属 性 与 其 他元 素相 同 。 其余 属性 不 变 。 通 过 以 上 两 种方 法 我 们 可 以很方 便 的 建 立 控 件 数 组 .采 用 动 态方 式建 立 控 件 数 组 。 程 序 的 编 写 更 加 灵 活 。 且 避 免 不 必 使 而 要 的 内存 浪 费 。 面 我们 就 来 讨 论 一 下 如 何 动态 建立 控 件 数 组 下 ( ) 行 阶 段 建立 控 件 数 组 2执 为 了 避 免 内存 的浪 费 常 采 用 动 态建 立 控件 数 组 .就 是在 程 序 模 块 (o ueP 先 声 明 一 个 空 的 控 件 数 组 , 到 要 使 用 该 控 m dl)  ̄。 等 件数组时 。 再重 新 声 明要 使 用 的控 件数 组 元 素 或 数 目 。 件数 组 控 可 以动 态 生 成 和 释放 , 件数 组对 属 性 也 具 有 相 同控 制 。 控 动态 生 成 和 释 放 控 件 数 组 是 在 运 行 时 .用 L a o d和 U la 句 加 载 和 nod语 卸 载 控 件 数 组 中 的控 件 。 1控 件 的加 载 ) 使 用 L a 语 句 加 载 控 件 。 a 语 句 的 语 法 为 : a bet o d d doje ,
谈谈VB.NET数组的使用

谈谈数组的使用我们都知道在所有程序设计语言中数组都是一个非常重要的概念,数组的作用是允许程序员用同一个名称来引用多个变量,因此采用数组索引来区分这些变量。
很多情况下利用数组索引来设置一个循环,这样就可以高效地处理复杂的情况,因此在很多情况下,使用数组可以缩短或者简化程序的代码。
本文主要介绍数组的使用,希望对大家的使用带来帮助。
数组中的第一个元素的下标称为下界,最后一个元素的下标称为上界,其余的元素连续地分布在上下界之间,并且数组在内存中也是用连续的区域来存储的,所以要求声明数组每维的长度不能超过Long数据类型的最大值,即264—1=263。
我们把VB.NET数组当作一个对象来处理,这就意味着数组类型是单个引用类型,数组变量包含指向构成数组元素、数组维和数组长度等数据的指针,数组之间互相赋值其实只是在相互复制指针,而且数组继承了System名字空间的Array类。
VB.NET中提供的数组类型和VB 6.0中有一些差别,我们将在下面做详细的讲解。
(1)VB.NET数组的声明VB.NET中的数组有两种类型:定长数组和动态数组。
这里先介绍定长数组的几种不同的声明方式,不同的声明方法将导致数组不同的有效范围。
◆Dim语句在模块段建立模块级数组,例如:1.Dim arrayl(3)As Integer◆Public语句在模块的声明部分建立一个公共数组,例如:2.Public counttype(20)as string◆Static语句声明一个过程内的局部数组,例如:3.Public Sub Ipaddress()4.Static server(30)as string5.End SubVB.NET还提供了新的数组初始化语法,只需要简单的语句就可以完成数组的声明和初始化,例如:6.New array initialization syntax7.Dim arrayl As Integer()={2,4,8}在VB.NET中,为了和其他语言更加易于协同操作,数组的下标均设定为0,不允许声明一个下界为1的数组,因此Option Base语句不再被VB.NET支持,而且在声明一个数组时必须用它的元素个数,而不是它的上界来初始化,例如:8.//声明一个一维数组具有3个元素,下标从0~29.Dim arrayl(3)As Integer10.arrayl(0):211.arrayl(1)=412.arrayl(2)=8以上声明的数组有三个元素,下标从0到2,如果代码企图访问下标为3的数组元素,将引起运行错误。
VB中控件数组及其应用

些类 型 相 同 、 功能 相 似 的控 件 。如 果 对 每 一 个 控 件 都 单
独处理 , 不 免 多 做一 些 麻 烦 而 重 复 的 工 作 , 而 且 也 会 消 耗
更 多 的资 源 。这 时 可 以 将 这 种 同一 类 型 的 控 件 定 义 成 一
个 控 件 数 组 。例 如 , 可 以将 一 组 命 令 按 钮 定 义 成 一 个 控 件 数组 , 也 可 以将 一 组 文 本 框 定 义 成 一 个控 件 数组 。控 件 数
一
0 引 言
在 开 发 Vi s u a l B a s i c 6 . 0的 应 用 程 序 时 , 往 往 要 使 用
一
在 系 统 资 源 和 内存 允 许 的范 围 内增 加 , 可用到的最大索 引
值为 3 2 7 6 7 。 同一 控 件 数 组 中 的不 同 控 件 可 以 有 自 己 的 属 性 值 设 置 。在 建 立 控 件数 组 时 , 每个元素 ( 控件) 被 自动 赋予一个唯一的索引号( I n d e x属 性 , 相 当 于 普 通 数 组 的下 标) , 索 引 号 从 0开 始 , 通 过索 引号 引 用 控 件 数 组 中 的某 个 控件 , 即控 件 数 组 名 ( 索引号) 。
控 件 数 组 中 的每 一 个 元 素 都 是 控 件 , 其 定 义方 式 与普
动 商 务 市 场 规 模 。同 时 , 要 重视 移动运 营商 的重要作 用 , 促 进 移 动 电子 商 务 中所 有 参 与 者 的相 互 合 作 , 逐 渐 建 立 起 适 合 我 国实 情 的移 动 电子 商 务 体 系 , 促 进 我 国移 动 电 子 商
类 似 的代 码 , 使 用 控 件 数 组 比单 独 创 建 多 个 控 件 更 方 便 , 代码也更容易维护 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VB.NET中控件数组的实现
摘要:VB编程时,当要处理一组相同类型的控件的同一事件过程时,我们可以
引入控件数组这一概念。如进行计算器程序编写时,可创建十个数字按钮的控件
数组,共享同一事件过程。VB6升级到VB.NET后,VB6控件数组的创建方法
在.NET中不可用,本文总结了几种VB.NET中使用控件数组的方法。
关键词:VB.NET控件数组事件过程程序代码
一、关于控件数组
熟悉VB6编程的,对控件数组这一概念应该非常熟悉,它是VB6中的一项简
单而非常实用的技术,是指具有相同名称的同类型的控件,共享同一事件。它的最
大好处是:简化编程。但当我们把这一用法沿用到VB.NET中来时,却发现无法实
现。虽然VB.NET中没有VB6中实现控件数组的方法,但在VB.NET中控件数组
的运用更加灵活了。
VB.NET中,控件数组的创建不再是在设计时简单地将同类型的各个控件的
Name属性值设置成同一名称就可以了,VB.NET中,不公能够创建同类型的相同
事件处理过程,还能够创建属于不同类型但共享相同事件的控件组。
二、VB.NET中控件数组的实现
要在VB.NET中实现控件数组这一机制,我们需要通过编写代码来完成,下面
来介绍几种的方法,大家可以根据程序的需要进行选择。
1、使用Handles子句。
先将控件数组中各控件对象依次添加到窗体,然后创建其中一个对象的事件
过程(执行部分先不写),再把其它对象的这一事件依次添加在后面,各事件过程名
之间用逗号分隔开来。在事件过程的执行部分,如果需要引用这些对象,则要先给
这些对象创建一个相同的名称。当要引用对象时,不再使用它们的Name属性值,
而是新创建的名称。示例代码如下(部分内容省略):
Label1_Click(ByVal sender…)Handles Label1.Click,Label2.Click,Label3.Click
Dim lbl As Label = CType(sender, Label)
当中,创建的是Label1的Click事件,在其后面,添加了Label2及Label3的Click
事件。事件过程中,通过一条Dim语句,定义三个标签具有相同的名称lbl,在下面
的代码中,要设置或获取其中某一个标签的某个属性值时,直接使用名称lbl即可。
这种方法实现起来最方便简单,以上实例中要求控件数组中控件类型相同,通过此
方法,也可实现不同类型同一事件处理程序的共享,如具有同一功能的菜单项和工
具栏中按钮。但当共享同一事件处理程序的控件数目较多时,使用此方法较麻烦。
2、使用AddHandler语句。
通过AddHandler语句连接到用户所定义的事件处理过程,但所建立的过程参
数必须和Click事件过程参数相同。如在窗体上有几个数字按钮,进行按钮单击时
能将数字显示在文本框中,可先建立事件处理过程,过程代码如下:
Private Sub numclick(ByVal sender As Object, ByVal e As EventArgs)
TextBox1.Text = sender.Text End Sub
然后指定在进行各个数字按钮单击时都能触发以上事件过程。在Windows
窗体设计器生成的创建每个按钮的New 方法下面依次添加如下代码:
AddHandler btn1.Click, AddressOf numclick
AddHandler btn2.Click, AddressOf numclick
AddHandler btn3.Click, AddressOf numclick
当进行数字按钮单击时,将执行相同的事件过程numclick中的代码。在本实
例中,因为都是要处理按钮的单击事件,所以在其单击事件中,可以通过sender.text
获取每个按钮中包含的文本。
控件数组中各控件对象,除了可以通过设计窗口来进行添加外,还可以通过编
写程序代码来创建添加,只是在创建以后需要设定各对象在窗体中的位置,如果所
要创建的对象数目较多,还需要进行排版。以上关于按钮的例子,创建按钮的示例
代码如下:
Private Sub Form1_Load(…)Handles MyBase.Load
Dim btn(3) As Button
Dim i As Short
For i = 0 To 3
If i = 0 Then
btn(0) = New Button
Me.Controls.Add(btn(0))
设置第一个按钮相关属性
Else
btn(i) = New Button
Me.Controls.Add(btn(i))
设置其它按钮相关属性
End If
使用AddHandler语句指定连接的事件处理过程
Next
End Sub
其中btn(3)表示控件数组,有四个对象,在For循环体中,先将对应按钮添加到
窗体,再通过指定其Top、Left属性值设置其在窗体中的位置,通过指定其Width
属性值设置其大小。
以上的实例中,没有对用户触发的是哪一个控件对象的事件处理程序进行区
分。如果要进行区分,则要在事件过程中使用Select Case条件语句,根据对象的Tag
或是TabIndex属性的值来进行判断。
3、通过创建类来实现控件数组。以下过程以创建一个Button类型控件数组
为例,不包含该控件数组使用的部分,具体创建步骤及代码如下:
1)为项目添加名为ButtonArray的类,该类继承
System.Collection.CollectionBase 类:
Public Class ButtonArray
Inherits System.Collections.CollectionBase
End Class
2)为组件建立私有、只读字段:
Private ReadOnly HostForm as System.Windows.Forms.Form
3)实现AddNewButton方法,通过此方法,实现按钮的动态添加:
Public Function AddNewButton() As System.Windows.Forms.Button
Dim aButton As New System.Windows.Forms.Button()
Me.List.Add(aButton)
HostForm.Controls.Add(aButton)
设置按钮相关属性
Return aButton
End Function
4)为ButtonArray类添加ParentForm属性,创建初始化函数(构造函数):
Public Sub New(ByVal host as System.Windows.Forms.Form)
HostForm = host
Me.AddNewButton()
End Sub
5)暴露控件数组:
Default Public ReadOnly Property Item(ByVal Index As Integer) As
System.Windows.Forms.Button
Get
Return CType(Me.List.Item(Index), System.Windows.Forms.Button)
End Get
End Property
6)实现Remove方法,通过此方法,实现按钮的动态删除:
Public Sub Remove()
If Me.Count > 0 Then
HostForm.Controls.Remove(Me(Me.Count -1))
Me.List.RemoveAt(Me.Count -1)
End If
End Sub
接下来是建立共享事件处理程序及将事件进行关联,此过程前面已经介绍
过。其他的控件数组也可以用类似的方式来实现
从上面的几种方法中能看出,在VB.NET要创建并使用控件数组,虽然麻烦很
多,有些甚至需要写大量代码,但其使用的灵活性也大大地加强了。学会在
VB.NET中灵活运用控件数组这一机制,能够提高编程效率,为我们节省大量时
间。
参考文献:
[1]张龙卿.《实例解析VB.NET应用编程》,北京希望电子出版社,2001
[2]罗朝盛、余文芳、余平,《Visual Basic 6.0程序设计教程》,人民邮电出版
社,2002
[3]《升级到Microsoft.NET→VisualBasic6.0控件和.NET控件的区别》
(2007-8-9)
[4]《VB.NET和C#.NET中控件数组的建立》(2009-4-24)