vb 控件属性 数组解决办法
- 格式:pdf
- 大小:63.73 KB
- 文档页数:3
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 net控件数组处理方法
, 控件数组, 处理方法, 简单实用
控件数组的处理方法By: LaiCQ____-4-28 16:30:27VB6有控件数组,这个是很方便的,可以将所有同类型的控件组成一个数组,方便处理,但却没有.网上找了很多方法,都不实用,现在采用如下方法可以解决问题:
方法为:采用Tag来标识各个控件
例如:
1: 加入控件:btnMain_0, btnMain_1, btnMain_2, 其Tag:分别设置为:0, 1, 2 2: 建立一个函数如下, 其可以响应不同的Button事件,这样将所有事件列在一起分别处理就不会乱了.
‘Main窗体:按钮Button的单击处理
Private Sub btnMain_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _
btnMain_0.Click, btnMain_1.Click, btnMain_2.ClickDim iInde_ As IntegerOn Error GoTo SolveErriInde_ = CInt(CType(sender, Button).Tag) Select Case iInde_
Case 0 ‘按键0的处理
Case 1 ‘按键1的处理
Case 2 ‘按键2的处理
End Se
lectE_it Sub
SolveErr:
End Sub
3: 对其它类型的控件处理是一样的,只要修改:CType(sender, Button)中的Button, 如下拉列表框为:iInde_ = CInt(CType(sender, ComboBo_).Tag)。
1、*************************************************Visual Studio 2010中添加注册控件的方法在VC6.0中添加ADO Data Control等控件是很很方便的,"Project" --> "Add to Project" --> "Components and Controls" 中打开"Components and Controls Gallery" 对话框,双击"Registered ActiveX Controls" 目录就能找到这两个控件。
也就是说VC 6.0下是默认注册了这两个控件的(一般情况应该装完VC 6.0就有了),直接拿来用就OK。
但是在Visual Studio2010中不会自带这些控件,因此要先注册才能添加,下面以ADO Data Control控件为例,说明添加方法:1.先检查C:\WINDOWS\system32目录下有没有MSADODC.ocx这个文件(Visual Studio 2010不自带,因此,多半是没有的),没有就去下载;这是我下载的,如果有更高的版本也行/source/31985302.在VS 2010中注册MSADODC.ocx控件。
在VS 2010中点击"Tools(工具)" --> "Visual Studio Command Prompt(Visual Studio命令提示)",在出现的窗口中输入如下命令回车即可:regsvr32 msadodc.ocx3.在“工具箱”里右击,单击“选择项”,在出现的对话框中选择“COM组件”选项卡,选中“Microsoft ADO Data Control,version 6.0(OLEDB)”,点击确定,在工具箱里就会出现这个控件了,需要用的时候就可以添加ADO Data Control控件了。
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三、给运行中添加的数组控件命名并编写事件其实例二已经给数组控件命了名,只是简单了些。
实验五数组一、控件属性的设置 (滚动条)1、在名称为Forml的窗体上添加一个名称为H1水平滚动条,请在属性窗口中设置它的属性值,满足下列要求:它的最小刻度值为1,最大刻度值为100,在程序运行时鼠标单击滚动条上滚动框以外的区域(不包括两边按钮),滚动框移动10个刻度。
再在滚动条下面画两个名称分别为L1、L2的标签,并分别显示1、100,运行时的窗体如图5-1所示。
工程文件名保存为sy5-1.vbp,窗体文件名为sy5-1.frm。
2、在名称为Form1的窗体上添加一个名称为HS1的水平滚动条,其刻度值范围为1 -100;添加一个命令按钮,名称为C1,标题为"移动滚动框"。
请编写适当的事件过程,使得在程序运行时,每单击命令按钮一次(假定单击次数不多于10次),滚动框向右移动10个刻度。
程序运行时的窗体如图5-2所示。
要求程序中不得使用变量,事件过程中只能写一条语句。
工程文件名保存为sy5-2.vbp,窗体文件名保存为sy5-2.frm。
3、在名称为Form1的窗体上画一个图片框,其名称为Picture1、一个水平滚动条,名称为HScroll1,和一个命令按钮,名称为Command1,标题为"设置属性",通过属性窗口在图片框中装入一个图形(文件名为pic1.jpg,位于考生目录下),图片框的高度与图形的高度相同,图片框的宽度任意(如图1所示)。
编写适当的事件过程,程序运行后,如果单击命令按钮,则设置水平滚动条的如下属性:Min 100Max 1500LargeChange 100SmallChange 10之后就可以通过移动滚动条上的滚动块来放大或缩小图片框。
程序运行后的窗体如图5-3所示。
要求程序中不得使用任何变量。
工程文件名为sy5-3.vbp,窗体文件名为sy5-3.frm。
4、在控件属性1文件夹下有一个工程文件sy5-4.vbp,窗体上有一个圆和一个矩形,还有水平和垂直滚动条各一个。
VB ListView控件属性、方法、事件常用属性:View设置或返回控件的视图类型值说明1-LvwIcon 图标类型2-LvwSmallIcon 小图标类型3-LvwList 列表类型4-LvwReport 报表类型Arrange 设置后返回控件的图标排列方式(在图标视图下有效)值说明1-LvwNone 不排列2-LvwAutoLeft 自动靠右排列3-LvwAutoTop 自动靠左排列Icons、SmallIcons、ColumnHeaderIcons属性Icons指定图标视图时的图标与ImageList的绑定SmallIcons、ColumnHeaderIcons指定列表视图时的图标与ImageList 的绑定PICTURE、PictureAlignment属性分别指定ListView控件的背景图片和布局方式ListItems(Index) 属性ListItems 属性是ListView控件中列表项的集合。
Index用于指定列表项集合中的一个对象,我们可以把这个对象看作对一行的引用ListItems集合的属性1. Text 设置或返回显示文本2. key 关键字3. index 索引编号4. icon , smallicon 不同视图时显示单元格的图标5. checked 给checkboxes 打√6. selected 使处于选定状态7. ListSubitems(index)集合我们可以把这个集合看作对这行中单元格的引用Text 设置或返回单元格显示的内容Reporticon 设置单元格的图标8.Subitems(index) 设置或返回单元格文本== ListSubitems (index).textColumnHeaders(index) 属性ColumnHeaders 属性是ListView控件中列标头的集合1. text 显示标题文本2. key3. index4. icon 指定标题图标5. alignment 指定index列的对齐方式(注意:第一列也就是列表项不能指定)6. position 返回当前列的索引7. subitemindex 返回指定列的listsubitem索引TextBackgroud 属性决定text的背景是透明还是ListView的背景色值0 lvwTransparent 透明1 lvw 不透明(用listview的背景色)Ghosted 属性logic决定是否虚状HideColumnHeaders 属性隐藏表头LabelWrap 属性标签转行rgeIcon 或View.SmallIcon 时才使用该属性FullRowSelect整行显示HotTracking热点追踪鼠标指针自动调整为手型HoverSelection 属性自动聚焦鼠标指针自动调整为手型AllowColumnReorder属性值设置.t.时,用户可以用鼠标选中1列拖至其他地方进行重新排列Sorted属性当值为.t.时,列表按字母排序常用方法:ListItems.add(index,key,text,icon,smallicon)向listitems添加一列表项。
使用控件数组(VB6高级编程)(福哥录入)控件数组是一组具有共同名称和类型,且事件过程也相同的控件。
一个控件数组至少应有一个元素,元素数目可在系统资源和内存允许的范围内增加;数组的大小也取决于每个控件所需的内存和windows 资源。
在控件数组中可用的最大索引值为32767。
同一控件数组中的元素有自己的属性设置值。
常见的控件数组包括实现菜单控件和选项按钮分组。
在设计时,使用控件数组添加控件所消耗的资源比直接向窗体添加多个相同类型的控件所消耗的资源要少。
当希望若干控件共享代码时,控件数组也很有用。
例如,如果创建了一个包含三个选项按钮的控件数组,则无论单击那个按钮时都将执行相同的代码。
若要在运行时创建新控件,则新控件必须是控件数组的成员。
使用控件数组时,每个新成员继承数组的共享事件过程。
没有控件数组机制是不可能在运行时创建新控件的,因为全新控件不具有任何事件过程。
控件数组解决了这个问题,因为每个新控件都继承为数组编写好的事件过程。
例如,如果窗体上有若干文本框,而且每个文本框都接受一个日期数值,则可创建一个控件数组,使所有文本框共享一个合法性检查代码。
1、设计时创建控件数组设计时有三种方法创建控件数组:(1)将相同名字赋予多个控件。
(2)复制现有的控件并将其粘贴到窗体上。
(3)将控件的Index 属性设置为非Null数值。
可以通过改变控件名称添加控件数组元素,步骤如下所示:(1)绘制控件数组中要添加的控件(必须为同一类型的控件)。
决定哪一个控件作为数组中的第一个元素。
(2)选定控件并将其Name 设置值变成数组第一个元素的Name 设置值。
(3)在数组中为控件输入现有的名称时,VisualBasic 将显示一个对话框,要求确认是否要创建控件数组。
此时选择“确定”按钮确认操作。
例如,若控件数组第一个元素名称为cmdCtlArr,则选择一个CommandButton将其添加到数组中,并将其名称设置为cmdCtlArr,此时,将显示这样一段信息:“已经存在名为‘cmdCtlArr’的控件。
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的点击事件处理程序,当任何一个按钮被点击时,都会弹出一个消息框显示按钮的文本。
中控件数组的实现摘要: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即可。
在中使⽤控件数组控件数组是位于⼀个窗体上共享同⼀名称的⼀组同种类型控件。
普通控件仅使⽤名称就可以识别,⽽引⽤控件数组中的成员则需要同时使⽤名称和索引。
开发⼈员在 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)。
解决VB中不能通过函数传递控件数组的问题(转)VB中的函数可以使用数组形参,但是却不能传递控件数组,原因是VB中的控件数组和数组本身的构造方式不太一样,虽然同是在内存中顺序排列,但是调用方法却有小小区别,控件数组的使用更象是一个集合。
数组的使用仅仅只能通过Lboun和Ubound函数来获取数组上下标,而控件数组则可使用control.Lbound,control.ubound属性来获取上下标。
数组中访问其元素只能使用Arr(Index)的方式,但控件数组则还可以通过control.item(index)来访问。
由于这点小小的不同,造成了控件数组不能当作函数参数传递的问题。
现在我们通过2种方式来解决!!2种方式实现各不相同,所能应用的范围也不一样。
第一种使用对象数组的方法:(例子说明)private sub SendControls()Dim Arr_Chk() as CheckBoxDim Int_I As IntegerReDim Arr_Chk(Chk_Tmp.Lbound To Chk_Tmp.Ubound)For Int_I =Chk_Tmp.Lbound to Chk_Tmp.UboundSet Arr_Chk(Int_I)=Chk_Tmp.Item(Int_I)nextCall TestControls(Arr_Chk)end subprivate sub TestControls(ByRef TestControls() As CheckBox) Dim Int_I as IntegerFor Int_I=Lbound(TestControls) To Ubound(TestControls)debug.pring TestControls(Int_I).Name & " " & TestControls(Int_I).ValuenextEnd Sub第二种方式,传递控件数组中一个元素。
VBA中的数组处理方法在Excel的VBA编程语言中,数组是一种非常有用的数据结构,用于存储和操作大量数据。
通过合理使用数组,可以提高程序的效率和灵活性。
本文将介绍VBA中的一些常用数组处理方法,帮助你更好地处理数组数据。
1. 声明和初始化数组在VBA中,声明和初始化数组可以使用以下方式:(a) 使用Dim语句声明数组,然后使用赋值语句初始化数组。
例如,声明一个整数数组并初始化为{1, 2, 3, 4, 5}:Dim myArray(4) As IntegermyArray = Array(1, 2, 3, 4, 5)(b) 一次性声明和初始化数组。
例如,声明并初始化一个字符串数组:Dim fruits() As Stringfruits = Array("apple", "banana", "orange")2. 访问数组元素在VBA中,可以使用索引来访问数组元素。
数组的索引从0开始,对应数组中的第一个元素。
例如,访问myArray中的第三个元素:value = myArray(2)3. 数组的长度和边界可以使用UBound函数获取数组的上边界(最大索引),使用LBound函数获取数组的下边界(最小索引)。
例如,获取myArray的长度和边界:length = UBound(myArray) - LBound(myArray) + 1lowerBound = LBound(myArray)upperBound = UBound(myArray)4. 遍历数组可以使用For循环结构遍历数组中的元素。
例如,遍历myArray并打印所有元素:For i = LBound(myArray) To UBound(myArray)Debug.Print myArray(i)Next i5. 动态调整数组大小在某些情况下,可能需要根据需要动态调整数组的大小。
巧用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], 胡绪英
因版权原因,仅展示原文概要,查看原文内容请购买。
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
a = Str(cd + 1)
b = Str(cd + 1)
For i = 0 To cd Step 1
a = a & "," & Str(x(i))
b = b & "," & Str(y(i)) Next i
ctr.sn = True
ctr.snx = a
ctr.sny = b
End Sub
控件中程序字符串处理代码Private Sub zhunhuan()
Dim xa() As Double
Dim ya() As Double
Dim af2() As String
Dim af3() As String
af2 = Split(m_snx, ",")
af3 = Split(m_sny, ",")
Dim cd As Integer
cd = 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 i
For i = 0 To (cd - 1) Step 1
ya(i) = Val(af3(i + 1))
Next i
End 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 从而完成了整个数组由宿主程序往控件的传递。
附:程序前面自动生成的属性代码(即在属性设置完成向导生成的代码)
Const m_def_snx = "0"
Const m_def_sny = "0"
Const m_def_sn = 0
'属性变量:
Dim m_snx As String
Dim m_sny As String
Dim m_sn As Boolean
附:程序后面生成的属性代码(应该分别有三对get,let函数以及InitProperties(),ReadProperties(PropBag As PropertyBag) ,WriteProperties(PropBag As PropertyBag)等函数因为只有下面的函数要做添加代码,其它的几个都原封不动不做修改)。
所作的修改也仅仅是在PropertyChanged "sny"后面添加了一句Call zhuanhuan也就是宿主程序中ctr.sn = True ctr.snx = a ctr.sny = b依次传递完三个属性后在最后一个属性传递完后启动zhuanhuan函数。
Public Property Let sny(ByVal New_sny As String)
m_sny = New_sny
PropertyChanged "sny"
Call zhuanhuan
End Property
作为一个初学者仅仅提出自己在项目中一个问题的解决办法,供大家讨论参考。