VB考试教程:使用对象集合
五、使用对象集合
集合是一组相关的对象。
表单上的所有对象都存储在同一个文件中。VisualBasic将这些对象视为同一组的成员。在Visual Basic术语中,窗体上的整个对象集称为Controls集合。当您打开一个新窗体并通过向该窗体添加对象来扩展它时,将自动创建Controls集合。每个窗体都有一个控件集合。事实上,Visual Basic有几个标准的对象集合供您在编写程序时使用。在这里,我们将学习使用任何一套时所需的基本技能。
1、设定标注方法
程序中的每个集合都有自己的名称,因此您可以在程序代码中将这些集合作为一个独立的单元来引用。例如,包含窗体上所有对象的集合称为Controls集合。
因为一个程序中可能有多个窗体,所以有多个Controls集合,所以当您在有多个窗体的程序中使用Controls集合时,需要添加窗体的名称。例如,若要引用Form1 (Form 1)上的Controls集合,应该在代码中使用以下名称:
表格1。控制
在这种表示法中,Form1对象的名称和控件的关键字之间的句点使控件看起来像一个属性,但Visual Basic程序员将Controls集合描述为包含在Form1对象中的对象。这两个对象之间的关系或层次结构有点像路径名中的文件夹,当稍后启动application对象时,将会再次看到这个符号。
除了在程序中使用对象和集合之外,Visual Basic还允许您浏览系统、查找其他应用程序对象并在程序中使用它们。当我们学习如何使用Visual Basic对象浏览器时,我们将再次讨论这个问题。
2.引用集合中的对象。
您可以单独或成组引用集合中的对象。
(1)分别引用集合中的对象。
有两种方法可以引用集合中的对象,或者引用集合中的单个成员:
第一种方法是在赋值语句中直接使用对象名来引用它。例如,语句:
表格1。控制!标签1。Caption = "员工"
Controls集合中的Label1对象单独列出,其title属性设置为“Employees”。感叹号(!)用于将Label1对象与Controls集合连接起来。虽然这个语句对于编译器来说可能有点冗长,但是它准确地反映了集合中的层次结构。
处理集合中对象的第二种方法是指定对象在对象组中的索引位置。VisualBasic以对象创建的相反顺序存储集合对象,因此您可以使用对象的“创建顺序”来分别引用它们,或者使用循环来检查几个对象。例如,要标识表单中最后创建的对象,可以指定下标0,如下例所示:
表格1。控件(0)。Caption = "商业"
该语句将表单中最后一个对象的Caption属性设置为“Business”(倒数第二个对象的下标是1,倒数第二个对象的下标是2,依此类推。)
(2)分组引用集合中的对象。
这将在下面描述。
3.为每个写...下一个循环。
对于每个...下一个循环旨在处理集合。
使用集合的优点是可以有效地处理对象组。虽然您可以引用集合中的单个成员,但是使用集合中的对象的最有用的方法是将它们作为一个组来对待。例如,您可以同时显示、移动、排序、重命名整个对象集或调整其大小。
要处理这些任务,您可以对每个任务使用循环...接下来逐个处理集合中的所有对象。每个的...下一个循环与For非常相似...下一个循环。当每个的...Next循环用于控制一个set,其语法如下:
对于FormName中的每个控件。控制
过程对象
下一个控件
其中包括:
控件是代表集合中当前对象的特殊变量,是对象类型变量;
FormName是表单的名称,如Form1、Form2等。
循环体用于处理集合中的每个对象。例如,您可以修改集合中这些对象的启用、左侧、顶部、标题或可见属性,当然您也可以在列表框中列出每个对象的名称。
例如,要同时移动窗体上的所有控件,请参见下面的说明。
4.移动一组对象。
示例:使用Controls集合同时将一组对象从窗体的左侧移动到右侧。
此程序使用For Each...每次用户单击“Command1”按钮时移动对象的下一个循环。
在窗体上添加几个控件,包括Command1命令按钮,并键入以下代码:
选项显式
dim Ctrl As Object
Private Sub command 1 _ Click()
For Controls
Ctrl中的每个Ctrl。左= Ctrl。left+200
Next Ctrl
End Sub
解释:使用For Each...下一个循环调整每个对象的Left属性,以便它们可以成组移动。
每当用户点击“命令1”按钮时,这对于每个...下一个循环将逐个检查Controls集合中的对象,并将它们向右移动200缇(要向左移动200缇,应减去200)。Ctrl变量是集合中当前对象的“body double”,其属性值与它所代表的对象的属性值相同。在这个循环中,Left属性值的调整控制了对象相对于表单左边部分的位置。
0条评论