VB .NET中控件数组的实现

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

中控件数组的实现

摘要:VB编程时,当要处理一组相同类型的控件的同一事件过程时,我们可以引入控件数组这一概念。如进行计算器程序编写时,可创建十个数字按钮的控件数组,共享同一事件过程。VB6升级到后,VB6控件数组的创建方法在.NET中不可用,本文总结了几种中使用控件数组的方法。

关键词:控件数组事件过程程序代码

一、关于控件数组

熟悉VB6编程的,对控件数组这一概念应该非常熟悉,它是VB6中的一项简单而非常实用的技术,是指具有相同名称的同类型的控件,共享同一事件。它的最大好处是:简化编程。但当我们把这一用法沿用到中来时,却发现无法实现。虽然中没有VB6中实现控件数组的方法,但在中控件数组的运用更加灵活了。

中,控件数组的创建不再是在设计时简单地将同类型的各个控件的Name属性值设置成同一名称就可以了,中,不公能够创建同类型的相同事件处理过程,还能够创建属于不同类型但共享相同事件的控件组。

二、中控件数组的实现

要在中实现控件数组这一机制,我们需要通过编写代码来完成,下面来介绍几种的方法,大家可以根据程序的需要进行选择。

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即可。这种方法实现起来最方便简单,以上实例中要求控件数组中控件类型相同,通过此方法,也可实现不同类型同一事件处理程序的共享,如具有同一功能的菜单项和工

具栏中按钮。但当共享同一事件处理程序的控件数目较多时,使用此方法较麻烦。

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方法,通过此方法,实现按钮的动态添加:

相关文档
最新文档