如何在VB6中正确清除表单堆栈

如何在VB6中正确清除表单堆栈,vb6,Vb6,我在VB6中有一个应用程序,我正在为它实现自动编译功能。只要应用程序处于空闲状态一段时间,就会关闭用户加载的所有表单,从而注销用户。 我正在使用FormStack并卸载所有已加载的表单。为了以正确的方式关闭表单,我们正在使用SendKeys ESC,表单将使用ESC键卸载 它在大多数情况下都可以正常工作,但问题是如果有类似键盘的东西,那么使用ESC键可以卸载键盘,但一旦卸载了所有表单,就会执行键盘旁边的代码,该代码引用了表单控件和加载表单 我可以做引用检查,但是这个功能在很多地方都实现了,而且到

我在VB6中有一个应用程序,我正在为它实现自动编译功能。只要应用程序处于空闲状态一段时间,就会关闭用户加载的所有表单,从而注销用户。 我正在使用FormStack并卸载所有已加载的表单。为了以正确的方式关闭表单,我们正在使用SendKeys ESC,表单将使用ESC键卸载

它在大多数情况下都可以正常工作,但问题是如果有类似键盘的东西,那么使用ESC键可以卸载键盘,但一旦卸载了所有表单,就会执行键盘旁边的代码,该代码引用了表单控件和加载表单

我可以做引用检查,但是这个功能在很多地方都实现了,而且到处检查都需要时间

我还想在500毫秒左右等待一段时间来关闭每个表单,但觉得依靠计时器是不好的

有谁能建议一个更好的办法来顺利地卸载所有表单。

我以前经常这样做 作为整数的dim i

for i = forms.count -1 to 0 step -1
 unload forms(i)
next
此外,您还可以创建一个接口来实现

IDispose

 sub Close()



dim miclazz as IDispose

form each miclazz in forms
  miclazz.Close()
next

为什么你不把表格中的每一个表格都放在a中?嗨,亚历克斯,非常感谢你的回复。嗨,亚历克斯,非常感谢你的回复。最初我确实卸载了表单本身。但在那个时候,我在很多地方引用表单元素时遇到了同样的问题。为了摆脱tha,我想平滑地关闭表单。为什么用close方法创建一个新接口在这种情况下会有帮助?Close方法仍然必须是这样的:Unload Me.just for order,如果您使用的是一种模式,即代码中的MVP如何具有一段动态code@MarkBertenshaw您可以检查接口,如果存在则调用它,如果不存在则调用unload。这将允许您卸载大多数表单并自定义导致问题的表单