控件数组

合集下载
  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.Load

BiuldTextBoxArray()

End Sub

…编写Button点击事件代码,利用控件数组访问三个TextBox控件

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

TextboxArray(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.Click

Dim i As Integer

For i = 0 To 4 …利用循环语句动态加入控件数组。

Dim FirstTextBox As New TextBox …定义文本框对象

Me.Controls.Add(FirstTextBox) …将一个文本框控件加入到Form上

List.Add(FirstTextBox) …将文本框控件加入到例表集合中

相关文档
最新文档