VB6 引用表单的类名而不是对象变量?

问题描述 投票:0回答:2

我正在维护一个 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 语句,我不确定它是否是“必需的”。

vba vb6
2个回答
2
投票

自从我使用 VB 以来已经有很长一段时间了,但是应用程序中的可见窗口(“表单”)可能在其属性中具有“frmMyForm”属性。 “frm”是当时表单名称的典型命名约定。 顺便说一句,我总是设置“选项显式”。它可能作为您现在可以启用的设置提供,以防止魔法变量。


0
投票

VB6 表单会自动创建为全局表单。此全局实例可通过表单名称访问,例如示例中的 frmMyForm。

Load frmMyForm
:这会将表单加载到内存中(然后执行frmMyForm_Load Sub)但不显示它。如果您需要在显示表单中的某些内容之前对其进行初始化,那么它非常有用。

当您使用

Set foo = New frmMyForm
时,您正在创建表单的新实例,该实例与全局实例不同。如果您需要同一表单的多个实例,这很有用,但必须在表单内部或表单外部使用
Unload Me
,使用:

Unload foo
Set foo = Nothing
© www.soinside.com 2019 - 2024. All rights reserved.