很多对象具有缺省属性。使用缺省属性能够简化代码,因为设置属性值时,不必详细指明该属性。Value 是对象缺省属性,这两个语句是等价的:
object = 20
和
object.Value = 20
为了说明它们是如何工作的,在窗体上绘制命令按钮和文本框。将下列语句添加到命令按钮的 Click 事件中:
Text1 = "hello"
运行该应用程序,并单击命令按钮。因为 Text 是文本框的缺省属性,所以文本框将显示文本“hello”。
当对象的引用被保存在对象变量中时,仍然可以使用缺省属性。下面的代码段说明了这一点。
Private Sub Command1_Click() Dim obj As Object '
把对Text1
的引用放入对象变量。Set obj = Text1
'
设置缺省属性(Text)
的值。obj = "hello"
End Sub
在上面的代码中,obj = "hello"
和 obj.Text = "hello"
是完全相同的。
当对象引用保存在 Variants 类型的变量中,而不是在对象变量中时,访问缺省属性是不同的。这是因为 Variants 能包含多种不同类型的数据。
例如,能够使用 Variants 中的引用读取 Text1 的缺省属性,但是试图将字符串“goodbye”赋给缺省属性的做法是行不通的。相反,它将用该字符串代替该对象引用,并改变 Variants 的类型。
为了说明这一点,以前面示例为例,在命令按钮的 Click 事件中输入下面的代码:
Private Sub Command1_Click() Dim vnt As Variant '
设置缺省属性(Text)
为“hello
”。Text1 = "hello"
'
把对Text1
的引用放入Variants
。Set vnt = Text1
'
显示Text1
的缺省属性,并且给出' Variants
包含对象引用。MsgBox vnt, , "IsObject? " & IsObject(vnt)
'
试图设置Text1
的缺省属性。vnt = "goodbye"
MsgBox vnt, , "IsObject? " & IsObject(vnt)
End Sub
当运行该应用程序并单击命令按钮时,首先出现的信息框显示 Text1 缺省属性的当前值“hello”,它通过查看 Text1 可得到证实。信息框的标题证明 Variant 包含有一个对象引用- 即对 Text1 的引用。
当单击信息框中的“确定”按钮时,“goodbye”赋给该 Variants,并破坏了 Text1 的引用。接着显示另一信息框,并显示该 Variants 的内容- 正如所看到的那样,它与 Text1.Text 的当前值不匹配。
信息框的标题证明, Variants 不再包含对象引用- 它现在包含字符串“goodbye”。
详细信息 有关 Variants 和其它数据类型的详细信息,请参阅“编程基础”中的“变量、常数和数据类型概述”。
使用对象和 Variants 的其它内容将在“Visual Basic 集合对象”中讨论。