vb控件数组
- 格式:ppt
- 大小:404.50 KB
- 文档页数:11
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事件处理程序,当任何一个按钮被单击时,都会产生一个被处理的事件。
VB控件数组的操作技巧控件数组有在设计时设置好的,也有在运行中创建的。
控件数组一方面使得程序简洁、令代码易于维护,另一方面能使程序具有灵活性。
可见,科学地利用控件数组可使编程工作的效率更高。
本文是从笔者回答网友的问题中整理出来的,与原来的回答相比略有改动。
希望这些"技巧"对大家有些帮助。
如有不妥之处,敬请指教。
一、运行中设置数组控件的属性设窗体上有若干个以 Command1 命名的命令按钮,现要求:点击其中一个按钮后,该按钮不可用,而其它的按钮均可用。
以下几行代码可以实现这个要求,比一个一个的设置高效得多。
Private Sub Command1_Click(Index As Integer)Dim i As Integer '计数器Dim comNum As Integer '按钮的索引号comNum = 0For i = 0 To Command1.Count - 1comNum = comNum + 1If comNum > Command1.Count - 1 Then comNum = 0Command1(comNum).Enabled = True '让所有按钮可用NextCommand1(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 '添加五个TextBoxtxtNum = txtNum + 1Num = Num + 1Load Text1(txtNum) '加载文本框Text1(txtNum).Top = Text1(txtNum - 1).Top + 450 '设置位置Text1(txtNum).Text = "Text" & Num '加载内容Text1(txtNum).Visible = True '令其可见:不能漏NextCommand1.Enabled = FalseCommand2.Enabled = TrueEnd SubPrivate Sub Command2_Click()Dim i As Integer, N As IntegerN = 0For i = 1 To Text1.Count - 1N = N + 1Unload Text1(N)NextCommand1.Enabled = TrueCommand2.Enabled = FalseEnd Sub三、给运行中添加的数组控件命名并编写事件其实例二已经给数组控件命了名,只是简单了些。
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 IntegerDim x() As DoubleDim y() As Doublecd = 50ReDim x(cd)ReDim y(cd)For i = 0 To cd Step 1x(i) = iy(i) = (i - 25) ^ 2 + 2.5Next iDim a As StringDim b As Stringa = Str(cd + 1)b = Str(cd + 1)For i = 0 To cd Step 1a = a & "," & Str(x(i))b = b & "," & Str(y(i)) Next ictr.sn = Truectr.snx = actr.sny = bEnd Sub控件中程序字符串处理代码Private Sub zhunhuan()Dim xa() As DoubleDim ya() As DoubleDim af2() As StringDim af3() As Stringaf2 = Split(m_snx, ",")af3 = Split(m_sny, ",")Dim cd As Integercd = Int(Val(af2(0))) ReDim ya(cd - 1)ReDim xa(cd - 1)For i = 0 To (cd - 1) Step 1 xa(i) = Val(af2(i + 1)) Next iFor i = 0 To (cd - 1) Step 1ya(i) = Val(af3(i + 1))Next iEnd Sub上述代码split函数将字符串剥离成一个数组从而af2(),af3()中存放字符即af3()中af3(0)为“51” af3(1)为“627.5” af3(2)为“578.5”For循环中Val(af3(i + 1))将af3(i + 1)中元素由字符转换为数字即af3(1)由“627.5”变换成为627.5 从而完成了整个数组由宿主程序往控件的传递。
5.5 控件数组
1.控件数组的概念
控件数组是由⼀组相同类型的控件组成的,它们共⽤⼀个控件名,具有相同的数组。
控件数组适⽤于若⼲个控件执⾏的操作相似的场合,控件组共享同样的事件过程。
控件数组通过索引号(属性中的Index)来标识各控件,第⼀个下标是0 。
如:Text1(0)、Text1(1)、Text1(2)、Text1(3)……
2.控件数组的建⽴
(1)在设计时建⽴
步骤:1)在窗体上画出某控件,并进⾏属性设置。
2)选中该控件进⾏“复制”和“粘贴”操作,系统提⽰“是否建⽴控件数组”,选择是即可。
多次粘贴就可以创建多个控件元素。
3)进⾏事件过程的编程。
(2)运⾏时添加控件数组
⽅法:1)在窗体上画出某控件,设置该控件的Index值为0,表⽰该控件为数组。
2)在编程时通过Load⽅法添加其余若⼲个元素,也可以通过Unload删除某个添加的元素。
3)每个添加的控件数组通过Left 和Top属性,确定其在窗体上的位置,并将Visible设置为True。
使⽤⽰例:建⽴⼀个类似国际象棋的棋盘,要求⿊⽩交替,运⾏时单击某个棋格,会改变颜⾊并显⽰其序号。
使用控件数组(VB6高级编程)(福哥录入)控件数组是一组具有共同名称和类型,且事件过程也相同的控件。
一个控件数组至少应有一个元素,元素数目可在系统资源和内存允许的范围内增加;数组的大小也取决于每个控件所需的内存和windows 资源。
在控件数组中可用的最大索引值为32767。
同一控件数组中的元素有自己的属性设置值。
常见的控件数组包括实现菜单控件和选项按钮分组。
在设计时,使用控件数组添加控件所消耗的资源比直接向窗体添加多个相同类型的控件所消耗的资源要少。
当希望若干控件共享代码时,控件数组也很有用。
例如,如果创建了一个包含三个选项按钮的控件数组,则无论单击那个按钮时都将执行相同的代码。
若要在运行时创建新控件,则新控件必须是控件数组的成员。
使用控件数组时,每个新成员继承数组的共享事件过程。
没有控件数组机制是不可能在运行时创建新控件的,因为全新控件不具有任何事件过程。
控件数组解决了这个问题,因为每个新控件都继承为数组编写好的事件过程。
例如,如果窗体上有若干文本框,而且每个文本框都接受一个日期数值,则可创建一个控件数组,使所有文本框共享一个合法性检查代码。
1、设计时创建控件数组设计时有三种方法创建控件数组:(1)将相同名字赋予多个控件。
(2)复制现有的控件并将其粘贴到窗体上。
(3)将控件的Index 属性设置为非Null数值。
可以通过改变控件名称添加控件数组元素,步骤如下所示:(1)绘制控件数组中要添加的控件(必须为同一类型的控件)。
决定哪一个控件作为数组中的第一个元素。
(2)选定控件并将其Name 设置值变成数组第一个元素的Name 设置值。
(3)在数组中为控件输入现有的名称时,VisualBasic 将显示一个对话框,要求确认是否要创建控件数组。
此时选择“确定”按钮确认操作。
例如,若控件数组第一个元素名称为cmdCtlArr,则选择一个CommandButton将其添加到数组中,并将其名称设置为cmdCtlArr,此时,将显示这样一段信息:“已经存在名为‘cmdCtlArr’的控件。
中控件数组的实现摘要:VB编程时,当要处理一组相同类型的控件的同一事件过程时,我们可以引入控件数组这一概念。
如进行计算器程序编写时,可创建十个数字按钮的控件数组,共享同一事件过程。
VB6升级到后,VB6控件数组的创建方法在.NET 中不可用,本文总结了几种中使用控件数组的方法。
关键词:控件数组事件过程程序代码一、关于控件数组熟悉VB6编程的,对控件数组这一概念应该非常熟悉,它是VB6中的一项简单而非常实用的技术,是指具有相同名称的同类型的控件,共享同一事件。
它的最大好处是:简化编程。
但当我们把这一用法沿用到中来时,却发现无法实现。
虽然中没有VB6中实现控件数组的方法,但在 中控件数组的运用更加灵活了。
中,控件数组的创建不再是在设计时简单地将同类型的各个控件的Name属性值设置成同一名称就可以了,中,不公能够创建同类型的相同事件处理过程,还能够创建属于不同类型但共享相同事件的控件组。
二、中控件数组的实现要在中实现控件数组这一机制,我们需要通过编写代码来完成,下面来介绍几种的方法,大家可以根据程序的需要进行选择。
1、使用Handles子句。
先将控件数组中各控件对象依次添加到窗体,然后创建其中一个对象的事件过程(执行部分先不写),再把其它对象的这一事件依次添加在后面,各事件过程名之间用逗号分隔开来。
在事件过程的执行部分,如果需要引用这些对象,则要先给这些对象创建一个相同的名称。
当要引用对象时,不再使用它们的Name属性值,而是新创建的名称。
示例代码如下(部分内容省略):Label1_Click(ByVal sender…)HandlesLabel1.Click,Label2.Click,Label3.ClickDim lbl As Label = CType(sender, Label)当中,创建的是Label1的Click事件,在其后面,添加了Label2及Label3的Click事件。
事件过程中,通过一条Dim语句,定义三个标签具有相同的名称lbl,在下面的代码中,要设置或获取其中某一个标签的某个属性值时,直接使用名称lbl即可。
电子教室学生注册时姓名文本框部分请输入:如:11李四学号+姓名,中间不加空格)实验准备:请同学们删除d:\ex21 文件夹里面的内容如果没有ex21文件夹,请在d:\ 下新建ex21 文件夹1、打开D:\下的工程文件和窗体文件,按以下要求完成程序:在窗体上创建2个列表框、2个标签、2个命令按钮。
List1用于显示可选课程、List2用于显示已选课程。
单击“选课”按钮,将List1中选定的课程名称加入到List2中显示,单击“清空”按钮,将删除List2中的所有课程。
程序运行的参考输出格式如图A-4所示,可选课程至少包含图A-4所示的6门。
最后将工程文件、窗体文件按原文件名保存在D:\EX21文件夹下。
图A-42、打开D:\下的工程文件和窗体文件,按以下要求完成程序:在窗体上创建1个列表框、1个图片框、2个标签、2个命令按钮。
List1用于显示可选课程、Picture1用于显示已选课程。
单击“选课”按钮,将List1中选定的课程名称加入到Picture1中显示,单击“清空”按钮,将删除Picture1中的所有课程。
程序运行的参考输出格式如图B-4所示,可选课程至少包含图B-4所示的6门。
最后将工程文件、窗体文件按原文件名保存在D:\EX21文件夹下。
图B-43、打开D:\下的工程文件和窗体文件,按以下要求完成程序:单击窗体,能产生10个两位的随机整数并存放在一维数组中,并能在窗体中输出该10个随机整数、最大数及其在10个数中的位置,要求使用语句强制显式声明模块中的所有变量,程序运行的参考输出格式如图A-41所示。
最后将工程文件、窗体文件按原文件名保存在D:\EX21文件夹下。
图A-414、打开D:下的工程文件和窗体文件,按以下要求完成程序:单击窗体,能产生10个两位的随机整数并存放在一维数组中,并能在窗体中输出该10个随机整数、最小数及其在10个数中的位置,要求使用语句强制显式声明模块中的所有变量,程序运行的参考输出格式如图B-41所示。
VB控件数组的使用一、什么是VB控件数组在VB编程中,控件是指用于构建用户界面的可视化元素,例如按钮、文本框、列表框等。
而控件数组是指将多个相同类型的控件组织在一起以便更方便地进行管理和操作。
二、为什么要使用VB控件数组使用控件数组可以带来许多好处,包括但不限于以下几点:1.简化代码:通过使用控件数组,我们可以减少代码的重复性,只需编写一次代码即可对数组中的所有控件进行操作。
这样可以大大简化代码的编写和维护工作。
2.提高效率:在某些情况下,我们需要对同一类型的多个控件进行相同或类似的操作。
使用控件数组可以避免重复性的操作,提高编程效率。
3.灵活性:控件数组可以动态增加或减少数组中的控件数量,从而使程序更具有灵活性和可扩展性。
4.统一管理:使用控件数组可以将同一类型的控件进行组织和管理,方便对其进行统一的控制和处理。
三、创建VB控件数组的方法在VB中,我们可以使用以下方法来创建和使用控件数组:1. 使用Control数组VB提供了一个叫做Control的特殊数组,可以容纳所有类型的控件。
我们可以通过声明Control类型的数组并将其初始化为特定类型的控件来创建控件数组。
例如,以下代码创建了一个名为btnArray的按钮数组:Dim btnArray() As Control = {btn1, btn2, btn3}其中btn1、btn2和btn3是已经存在于窗体上的按钮控件。
2. 动态创建控件数组除了使用Control数组外,我们还可以在运行时动态创建控件数组。
可以使用ReDim语句来调整数组的大小,并使用循环语句逐个初始化数组中的控件。
例如,以下代码使用循环创建了一个名为txtArray的文本框数组:Dim txtArray() As TextBoxDim i As IntegerReDim txtArray(2) '设置数组大小为3For i = 0 To 2txtArray(i) = New TextBox '创建新的文本框控件txtArray(i).Name = "txt" & (i + 1) '设置控件的名称Me.Controls.Add(txtArray(i)) '将控件添加到窗体上Next i在上述代码中,我们通过ReDim语句设置了txtArray数组的大小为3,并在循环中创建了3个新的文本框控件,并将其添加到窗体上。
vb控件数组的使用VB控件数组的使用在VB编程中,控件数组是一种非常有用的功能,它可以让我们更方便地对多个控件进行操作和管理。
控件数组允许我们将一组相同类型的控件组织在一起,并通过索引来访问它们,从而提高编程效率和代码的简洁性。
控件数组的定义非常简单,只需要在声明控件时加上一个方括号,用来表示这是一个控件数组。
例如,我们可以定义一个名为btnArray的按钮数组,代码如下:Dim btnArray(10) As Button上述代码定义了一个包含10个按钮的按钮数组。
我们可以通过索引来访问数组中的按钮,例如btnArray(0)表示第一个按钮,btnArray(1)表示第二个按钮,依此类推。
使用控件数组可以简化我们对多个控件的操作。
例如,如果我们想要给按钮数组中的所有按钮设置相同的属性,我们只需要使用一个循环来遍历数组,并对每个按钮应用相同的属性即可,代码如下:For i As Integer = 0 To btnArray.Length - 1btnArray(i).Text = "按钮" & (i + 1)btnArray(i).BackColor = Color.RedNext上述代码将按钮数组中的所有按钮的文本设置为"按钮1"、"按钮2"、"按钮3"等,并将它们的背景颜色设置为红色。
除了设置属性,控件数组还可以方便地管理多个控件的事件。
例如,如果我们想要为按钮数组中的所有按钮添加相同的点击事件处理程序,我们只需要使用一个循环来遍历数组,并为每个按钮添加相同的事件处理程序即可,代码如下:For i As Integer = 0 To btnArray.Length - 1AddHandler btnArray(i).Click, AddressOf btn_ClickNextPrivate Sub btn_Click(sender As Object, e As EventArgs)Dim btn As Button = DirectCast(sender, Button)MessageBox.Show("您点击了按钮:" & btn.Text)End Sub上述代码将为按钮数组中的所有按钮添加一个名为btn_Click的点击事件处理程序,当任何一个按钮被点击时,都会弹出一个消息框显示按钮的文本。
第五章数组主要内容●数组的概念●静态数组及声明●动态数组及声明●数组的基本操作●控件数组●自定义数据类型●常用算法(二)●常见错误5.1 数组的概念1.引例若我们要求一个班100个学生的平均成绩,然后统计高于平均分的人数。
按以前简单变量的使用和循环结构相结合,求平均成绩程序段如下:aver = 0For i = 1 To 100mark = Val(InputBox("输入第" & i & " 位学生的成绩"))aver = aver + markNext iaver = aver / 100但若要统计高于平均分的人数,则无法实现。
mark是一个简单变量,存放的是最后一个学生的成绩。
从已有知识解决方法:再重复输入成绩,逐一与平均分比较。
这样带来两个问题:(1)输入数据的工作量成倍增加;(2)若本次输入的成绩与上次不同,则统计的结果不正确。
解决此问题的根本方法是:始终保持输入的数据,一次输入,多次使用,为此必须引入有关数组的内容。
2.数组的概念数组并不是一种新的数据类型,而是一组相同类型的变量的集合。
数组必须先声明后使用。
在VB中有两类数组,一类是静态(定长)数组另一类称为动态(可变长)数组。
5.2 静态数组及声明在声明数组时就确定了数组元素的个数的数组称为静态数组。
定义格式: Dim 数组名(下标1[,下标2…]) [As 类型]数组维数:定义数组是用几个下标就表示数组是几维数组,最多60维。
定义数组是下标的形式为[下界 To ] 上界省略下界则系统默认下界为0,下界上界的值必须为数值常数或常数表达式(也可含逻辑常数或数值字符串)。
数组每一维大小:上界-下界+1。
数组元素的个数(或称大小):每一维大小的乘积[例]Dim mark(1 to 100) As Integer定义数组mark为一维整型数组,其下界为1,上界为100,大小为100(即mark有100个元素)。