我正在维护一个 VB6 应用程序,我想了解这意味着什么:
' somewhere there's a form defined frmMyForm
Sub Main()
Load frmMyForm
End Sub
' elsewhere
frmMyForm.Show
我不明白的是,任何地方都没有
frmMyForm
对象 Dim
。它只是引用用户表单的名称。我知道你也可以 Set foo = New frmMyForm
和 foo.Show
并且它也会起作用 - 我已经在立即窗口中尝试过这个。
这是怎么回事?表单的名称只是预先声明的全局变量还是我遗漏了什么?
我知道它与 VBA 类似但不完全相同。我查看了 Load 语句,我不确定它是否是“必需的”。
自从我使用 VB 以来已经有很长一段时间了,但是应用程序中的可见窗口(“表单”)可能在其属性中具有“frmMyForm”属性。 “frm”是当时表单名称的典型命名约定。 顺便说一句,我总是设置“选项显式”。它可能作为您现在可以启用的设置提供,以防止魔法变量。
VB6 表单会自动创建为全局表单。此全局实例可通过表单名称访问,例如示例中的 frmMyForm。
Load frmMyForm
:这会将表单加载到内存中(然后执行frmMyForm_Load Sub)但不显示它。如果您需要在显示表单中的某些内容之前对其进行初始化,那么它非常有用。
当您使用
Set foo = New frmMyForm
时,您正在创建表单的新实例,该实例与全局实例不同。如果您需要同一表单的多个实例,这很有用,但必须在表单内部或表单外部使用 Unload Me
,使用:
Unload foo
Set foo = Nothing