使用缺省属性

很多对象具有缺省属性。使用缺省属性能够简化代码,因为设置属性值时,不必详细指明该属性。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 能包含多种不同类型的数据。

例如,能够使用 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 集合对象”中讨论。