如何确定所有窗体均关闭

ZDNet软件频道 时间:2004-02-10 作者:ZDNet China |  我要评论()
本文关键词:vb
当VB程序结束的时候, 这个窗体的所有内容都关闭并从内存中移除 .但是VB 不会自动完成这个工作; 因此, 如果你的程序包含多个窗口, 那么当程序终止的时候一个或者多个窗口还会保留在内存中,这种情况很有可能存在。
本文译自Builder.com,未经许可请勿转载vb程序结束的时候, 这个窗体的所有内容都关闭并从内存中移除 .但是vb 不会自动完成这个工作; 因此, 如果你的程序包含多个窗口, 那么当程序终止的时候一个或者多个窗口还会保留在内存中,这种情况很有可能存在。

   调用一个窗体的隐藏方法或者设置它的可见属性来欺骗是不能关闭的。甚至如果你明确的关闭一个窗体,它将会占据一定的资源,除非这个窗体的参数没有设置。这个技巧告诉我们如何确定一个关闭程序的所有内容并且它们的资源释放将在程序结束的时候完成。

   现在,我们来看看下面的例子,可以发现一些问题:

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

现在可以关闭所有的窗口除了主窗口。

如果从一个分隔的程序中调用, 不要遍历参数, 进程将会关闭程序窗口中的所有内容。


本文作者: Peter Aitken 自从在vb1.0版本发布后就开始编程. 他写了许多关于vb和其他计算机和程序的文章。


责任编辑:李宁

欢迎评论投稿

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134