调用一个窗体的隐藏方法或者设置它的可见属性来欺骗是不能关闭的。甚至如果你明确的关闭一个窗体,它将会占据一定的资源,除非这个窗体的参数没有设置。这个技巧告诉我们如何确定一个关闭程序的所有内容并且它们的资源释放将在程序结束的时候完成。
现在,我们来看看下面的例子,可以发现一些问题:
Dim f As Form
For Each f In Forms
Unload f
Set f = Nothing
Next f
问题是,如果你在进程中执行这个代码,它将可以正确的工作,但是如果你从主窗口调用,它将试图关闭主窗口,这个主窗口已经在自己的关闭中运行。这里告诉你如何发现这个潜在问题:
Public Sub UnloadAllForms(Optional FormToIgnore _
As String = "")
Dim f As Form
For Each f In Forms
If f.Name <> FormToIgnore Then
Unload f
Set f = Nothing
End If
Next f
End Sub
在这个位置使用这个进程, 你可以这样调用它:
UnloadAllForms Me.Name
现在可以关闭所有的窗口除了主窗口。
如果从一个分隔的程序中调用, 不要遍历参数, 进程将会关闭程序窗口中的所有内容。