gpt4 book ai didi

vb6 - 从另一个表单调用一个表单的更好方法是什么

转载 作者:行者123 更新时间:2023-12-05 00:22:26 24 4
gpt4 key购买 nike

假设我有 2 个名为 Form1 和 Form2 的表单。我想从 Form1 调用 Form2 中的函数 abc()。哪个更好,为什么?

方法一:

 'In Form1
Form2.abc()

方法二:

 'In Form1
Dim oFrm As New Form2
oFrm.abc()

最佳答案

在 VB6 中,当程序运行时,只要您通过表单名称引用表单,VB6 就会创建该表单的实例。该实例也被添加到 Forms 集合中。

您可以使用此代码或其合适的变体来发现哪些表单已被实例化:

Dim frmCurrent As Form
Dim output As String
For Each frmCurrent In Forms
output = output & frmCurrent.Name & vbCrLf
Next
MsgBox output

因此,当您调用 Form2.abc() 时,您是在新创建的 Form2 表单实例上调用 abc 过程(如果有助于您的理解,您可以用单词 class 代替 form)。

当需要退出程序时,您可能会遇到一种错误,程序在内存中徘徊但在屏幕上不可见,因为您关闭了所有可见的表单,但没有关闭通过调用实例化的表单 Form2.abc。这导致流行的“关闭所有窗体”代码被添加到许多 VB6 程序的退出过程中:

Private Sub cmdExit_Click()
Dim current As Form
Dim output As String
For Each current In Forms
Unload current
Next
End Sub

当您标注一个变量并将 Form2 的新实例分配给它时,您正在创建一个范围根据该变量的新表单。该实例添加到 Forms 集合中:

Dim frmNew As New frmTest
frmNew.abc

Dim frmCurrent As Form
Dim output As String
For Each frmCurrent In Forms
output = output & frmCurrent.Name & vbCrLf
Next
MsgBox output 'Does not include frmNew aka frmTest

因此,您的第二种方法通常更好,因为它不会在 Forms 集合中创建 Form2 的实例,也不会重用可能会给您带来意外结果的现有实例。

关于vb6 - 从另一个表单调用一个表单的更好方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15032247/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com