控件数组

控件数组
控件数组

在https://www.360docs.net/doc/2f568806.html,中使用控件数组

控件数组是位于一个窗体上共享同一名称的一组同种类型控件。普通控件仅使用名称就可以识别,而引用控件数组中的成员则需要同时使用名称和索引。开发人员在Visual Basic 6.0 以及更早的版本中使用控件数组主要有以下三个理由:

1. 在循环中访问数组中控件的属性。

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

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

控件数组的使用,极大的方便了开发人员。然而,刚刚从Visual Basic6.0(以下简称VB6.0)过渡到Visual https://www.360docs.net/doc/2f568806.html,(以下简称https://www.360docs.net/doc/2f568806.html,)的初学者却发现,在https://www.360docs.net/doc/2f568806.html,中似乎不能使用控件数组了。笔者仔细查阅了https://www.360docs.net/doc/2f568806.html,的MSDN文档发现,在https://www.360docs.net/doc/2f568806.html, 中,确实不再支持控件数组。原因是,https://www.360docs.net/doc/2f568806.html,对事件模型作了很大的改动,引入了另外一种数据类型――控件集合模型,使控件数组没有存在的必要。就像VB6.0 中的控件数组可以共享事件一样,https://www.360docs.net/doc/2f568806.html, 中的事件模型允许任何事件处理程序都可以处理来自多个控件的事件,这就允许创建属于不同类型但共享相同事件的控件组。

所谓控件集合是指包含在一个容器中的所有控件的总和,能够创建控件集合的容器有:Form、Panel、GropBox等。程序运行时,可以通过访问容器的Control属性来得到该容器中的所有控件。

下面将演示如何通过控件集合来使用控件数组:

一、直接使用Form容器的控件集合来使用控件数组:

建立一个https://www.360docs.net/doc/2f568806.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/2f568806.html,中控件数组的特点让人稍感不适的是,控件数组的下标是按加入顺序的倒排续产生的,但程序员完全可以改变这个顺序:在代码编辑窗中点击“#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)来访问其中的每一个控件。

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

建立一个https://www.360docs.net/doc/2f568806.html,项目,在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都被修改了,效果和前面的方法一样。

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

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

建立一个https://www.360docs.net/doc/2f568806.html,工程,在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) …将文本框控件加入到例表集合中

List.Item(i).top = i * List.Item(i).height + 20 …修改新加入控件在Form上的位置

List.Item(i).left = 100

FirstTextBox.TabIndex = i …修改新加入控件的TabIndex值

List.Item(i).text = "TextBox" &i.ToString …修改默认文本。

Next

End Sub

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

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Dim i As Integer

For i = 0 To 4

List.Item(i).text = "第" &i.ToString& " 个元素"

Next

End Sub

运行项目,先点击Button1,Form上将出现5个文本框,然后再点击Button2,修改这五个文本框的Text 属性。

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

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

控件数组的最重要的特色之一就是让一组控件响应同一个事件,在事件例程中接收控件具体某控件的Index 值来分别处理处理具体问题,这点已经在VB6.0中表现得淋漓尽致了,它在https://www.360docs.net/doc/2f568806.html,中同样可以实现,只不过实现方式有了变化。由于在容器中的每一个控件只要不作特殊处理,都会自动构成了控件集合,这样,只要对原有的事件例程作少量修改,就可以非常方便的实现用一个事件例程响应某个集合中所有控件产生的事件。

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

建立一个https://www.360docs.net/doc/2f568806.html,项目,在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.Click

Select Case sender.tabindex

Case 0

MessageBox.Show("你点击了Button1 按钮")

Case 1

MessageBox.Show("你点击了Button2 按钮")

Case 2

MessageBox.Show("你点击了TextBox1 按钮")

End Select

End Sub

在这段代码中:Private Sub mControl_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Button1.Click, Button2.Click, TextBox1.Click 是一个自定义事件,在Handles 后面的语句表示:该例程将响应Button1, Button2, TextBox1控件发出的Click事件,如果还有其他控件,也可以放在后面,每一个控件名称用“,”号隔开。

运行项目,分别点击Form上面的三个控件就能体会到它的用法。

====================

https://www.360docs.net/doc/2f568806.html,里面的动态控件数组的问题,这个动态控件数组在vb里面easy到极致,可是在https://www.360docs.net/doc/2f568806.html,里面却有点让人摸不着头脑。

其实也很简单,因为https://www.360docs.net/doc/2f568806.html,和vb不同拉,来看看https://www.360docs.net/doc/2f568806.html,的动态控件数组如何实现。

1、在form的头部定义一个公共的ArrayList类型的变量

Dim m_items As New ArrayList

2、在程序中动态生成控件

while (a

dimlblControl as Label= new Label

lblControl .Text="你好"

lblControl .dock=......top

lblControl .autosize=false.

....

me.controls.add(lblControl )'把动态产生的控件放到对应的区域

'下面这个地方注意拉,

m_items.Add(lblControl )'把这个label放到前面第一步定义的ArrayList中去

AddHandlerlabel.Click, AddressOfLblControlArrayClick '给这组动态控件定义click事件的触发函数LblControlArrayClick。

end while

3、定义LblControlArrayClick的click事件的触发函数,这个是和vb不同的地方的关键所在拉。

'控件数组事件

Private Sub LblControlArrayClick (ByVal sender As Object, ByVal e As EventArgs)

Dim lblText As String

lblText = CType(sender, Label).Text '这里CType就是将触发事件的对象还原为Label对象,

'有点像java里面的集合阿,放进去后再取出来的时候,要造型一下。

msgbox ("所电击的动态控件的文字是:" &lblText)

end sub

好啦,就是这么简单,https://www.360docs.net/doc/2f568806.html,中的控件数组。

如果你要为控件数组定义其他的触发事件,只要修改对应的触发就可以了。

VB .NET中控件数组的实现

https://www.360docs.net/doc/2f568806.html,中控件数组的实现 摘要:VB编程时,当要处理一组相同类型的控件的同一事件过程时,我们可以引入控件数组这一概念。如进行计算器程序编写时,可创建十个数字按钮的控件数组,共享同一事件过程。VB6升级到https://www.360docs.net/doc/2f568806.html,后,VB6控件数组的创建方法在.NET中不可用,本文总结了几种https://www.360docs.net/doc/2f568806.html,中使用控件数组的方法。 关键词:https://www.360docs.net/doc/2f568806.html,控件数组事件过程程序代码 一、关于控件数组 熟悉VB6编程的,对控件数组这一概念应该非常熟悉,它是VB6中的一项简单而非常实用的技术,是指具有相同名称的同类型的控件,共享同一事件。它的最大好处是:简化编程。但当我们把这一用法沿用到https://www.360docs.net/doc/2f568806.html,中来时,却发现无法实现。虽然https://www.360docs.net/doc/2f568806.html,中没有VB6中实现控件数组的方法,但在https://www.360docs.net/doc/2f568806.html,中控件数组的运用更加灵活了。 https://www.360docs.net/doc/2f568806.html,中,控件数组的创建不再是在设计时简单地将同类型的各个控件的Name属性值设置成同一名称就可以了,https://www.360docs.net/doc/2f568806.html,中,不公能够创建同类型的相同事件处理过程,还能够创建属于不同类型但共享相同事件的控件组。 二、https://www.360docs.net/doc/2f568806.html,中控件数组的实现 要在https://www.360docs.net/doc/2f568806.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/2f568806.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/2f568806.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/2f568806.html,中使用控件数组 控件数组是位于一个窗体上共享同一名称的一组同种类型控件。普通控件仅使用名称就可以识别,而引用控件数组中的成员则需要同时使用名称和索引。开发人员在Visual Basic 6.0 以及更早的版本中使用控件数组主要有以下三个理由: 1. 在循环中访问数组中控件的属性。 2. 向窗体动态添加新控件。 3. 允许一个事件例程与多个控件连接。 控件数组的使用,极大的方便了开发人员。然而,刚刚从Visual Basic6.0(以下简称VB6.0)过渡到Visual https://www.360docs.net/doc/2f568806.html,(以下简称https://www.360docs.net/doc/2f568806.html,)的初学者却发现,在https://www.360docs.net/doc/2f568806.html,中似乎不能使用控件数组了。笔者仔细查阅了https://www.360docs.net/doc/2f568806.html,的MSDN文档发现,在https://www.360docs.net/doc/2f568806.html, 中,确实不再支持控件数组。原因是,https://www.360docs.net/doc/2f568806.html,对事件模型作了很大的改动,引入了另外一种数据类型――控件集合模型,使控件数组没有存在的必要。就像VB6.0 中的控件数组可以共享事件一样,https://www.360docs.net/doc/2f568806.html, 中的事件模型允许任何事件处理程序都可以处理来自多个控件的事件,这就允许创建属于不同类型但共享相同事件的控件组。 所谓控件集合是指包含在一个容器中的所有控件的总和,能够创建控件集合的容器有:Form、Panel、GropBox等。程序运行时,可以通过访问容器的Control属性来得到该容器中的所有控件。 下面将演示如何通过控件集合来使用控件数组: 一、直接使用Form容器的控件集合来使用控件数组: 建立一个https://www.360docs.net/doc/2f568806.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/2f568806.html,中控件数组的特点让人稍感不适的是,控件数组的下标是按加入顺序的倒排续产生的,但程序员完全可以改变这个顺序:在代码编辑窗中点击“#Region " Windows 窗体设计器生成的代码”旁边的“+”号,代码展开后,找到如下代码: Me.Controls.Add(Me.Button1) Me.Controls.Add(Me.TextBox3) Me.Controls.Add(Me.TextBox2) Me.Controls.Add(Me.TextBox1)

VBA中的控件数组

VBA中的控件数组 2009年2月28日 评论发表评论 大家都知道,和VB不一样,VBA中不能直接创建控件数组。然而可以使用WithEvents来模拟相同的功能。我们需要一个类来处理控件的事件,而每一个控件需要一个类实例。对于不同控件的类实例,我们可以使用一个对象数组或者集合来实现。 这里使用按钮控件做为例子来介绍怎样在窗体和工作表中创建控件数组。 创建类 创建控件数组之前,我们需要一个类来处理控件的事件。 在VBE窗口中,单击菜单“插入”->“类模块”,在属性窗口中将类的名称改为“cCB”。 在类模块中添加下面这一行: Private WithEvents m_CB As https://www.360docs.net/doc/2f568806.html,mandButton 这样你就可以从代码栏的顶部左边下拉列表中选择m_CB并选择右边下拉列表中相应的事件。 完整的代码如下: Private WithEvents m_CB As https://www.360docs.net/doc/2f568806.html,mandButton ' 初始化,将控件绑定到类 Public Sub Init(ctl As https://www.360docs.net/doc/2f568806.html,mandButton) Set m_CB = ctl End Sub ' 控件的Click事件 Private Sub m_CB_Click() MsgBox "你点击了:" & m_CB.Caption End Sub ' 注销类 Private Sub Class_Terminate() Set m_CB = Nothing End Sub

窗体中的控件数组 然后创建一个窗体,在窗体中添加两个CommandButton,将这两个按钮控件分别命名为cmd1和cmd2,然后在窗体中的初始化事件中添加代码如下: Private ctlCB(1 To 2) As cCB ' 以对象数组保存类的实例 Private Sub UserForm_Initialize() Set ctlCB(1) = New cCB ' 将按钮cmd1赋给类的实例 ctlCB(1).Init cmd1 Set ctlCB(2) = New cCB ctlCB(2).Init cmd2 End Sub 这里使用对象数组ctlCB(1 to 2)来保存类实例。每当使用Set语句创建一个类实例,然后使用类的Init方法将按钮控件赋给这个实例。 也可以使用集合来保存这个类的实例。代码如下: Private colCB As New Collection Private ctlCB As cCB … 以集合保存类的实例 Private Sub UserForm_Initialize() Set ctlCB = New cCB ' 将按钮cmd1赋给类的实例 ctlCB.Init cmd1 ' 将类的实例加入到集合中 colCB.Add ctlCB Set ctlCB = New cCB ctlCB.Init cmd2 colCB.Add ctlCB End Sub

vb 控件属性 数组解决办法

Vb 属性接口数组解决办法 前不久制作Activex 控件,自定义接口成员,本来想通过外界传递数组给控件,但是我没有找到设置接口成员属性为数组的方法(我是个VB初学者,直到目前也没有找到方法)。后来发现vb中字符串长度可以存放多达2亿个字符。想到了将数组转换为字符串然后用字符串转换为数组的方法。 整体思路:在控件外接程序中将数组生成字符串,在控件里面将得到的字符串转换为数组完成数组的传递。举例详细代码如下宿主程序中按钮Command1单击触发以下函数运行:第一个For 循环生成x(0 to 50),y(0 to 50)两个数组。a,b为两个字符串,其第一个字符(数字形式)存放数组元素数目一共从0到50,有51个元素。Str()指令是将数字转换为字符数字,比如将51转换为“51”。第二个For循环将a,b两个字符串不断的添加字符(数字转换为字符形式,采用&连接,中间用逗号隔开)。从而a,b字符串分别是“51,0,1,2,3……,50”和“51,627.5 578.5 531.5 486.5……627.5” 控件的名称为ctr,为其设置了三个属性接口sn(布尔型) snx(字符串)sny(字符串)。其中snx,sny分别用于承接外界传递的字符串,Sn为某个位(与该主题无关,在控件中指示另外某个事件的)Private Sub Command1_Click() Dim cd As Integer Dim x() As Double Dim y() As Double cd = 50 ReDim x(cd) ReDim y(cd) For i = 0 To cd Step 1 x(i) = i y(i) = (i - 25) ^ 2 + 2.5 Next i Dim a As String Dim b As String

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控件数组的习题及答案

电子教室学生注册时姓名文本框部分请输入:如: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数组的初始化

所谓数组的初始化,就是给数组的各元素赋初值,前一节已经介绍过赋值语句或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控件数组的操作技巧

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 '加载内容

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 语句格式:

相关文档
最新文档