窗体自动加载问题

hrtc 2006-07-03 11:40:16
vb程序里,一旦窗体上有控件被使用就会自动加载窗体.有时结束应用程序后由于窗体还是被加载所以虽然窗口没了,但任务管理器中还在,不知有什么可行办法,或者禁用自动加载窗体.
例子如下,按了command1后马上关闭窗体,任务管理器中还在,取消注释设个全局锁,但是会发生一些奇怪的事,计算会出错,发现第一次按unload时command1会被取消,这样锁就算错了.
有1种解决办法是加个end但是,end是把所有程序结束,我还有其他程序需要执行,只是单单想关闭这个窗口.这种情况在vb编程中很常见,不知大家怎么解决的?
Private mFlagCanUnLoad As Integer

Private Sub Command1_Click()
'mFlagCanUnLoad = mFlagCanUnLoad + 1
modUtil.waitTime 1'该函数功能是doevents一秒
Randomize (Rnd)
Text1.Text = Rnd
'mFlagCanUnLoad = mFlagCanUnLoad - 1
End Sub

Private Sub Form_Unload(Cancel As Integer)
'While mFlagCanUnLoad <> 0
'DoEvents
'Wend
End Sub
...全文
160 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hrtc 2006-07-04
  • 打赏
  • 举报
回复
不是想结束程序,只想卸载其中一个form,但是这个form上的控件可能在被卸载后仍然被引用,如上程序,然后又被重新加载,怎么能防止form被重新加载呢?比如上面程序waittime是做1秒的doevents,这期间unload form,但是该方法仍会执行,调到text1.text=rnd时form又会被加载。
hrtc 2006-07-03
  • 打赏
  • 举报
回复
不行,代码如下
Private Sub Command1_Click()
modUtil.waitMiliTime 1000
Text1.Text = Rnd
End Sub

Private Sub Form_Unload(Cancel As Integer)
On Error Resume Next
Dim i
i = 1 / 0
End Sub
vbfunner 2006-07-03
  • 打赏
  • 举报
回复
写一个错误代码,退出时运行.就可以了,把错误捕获了.然后关闭.
hrtc 2006-07-03
  • 打赏
  • 举报
回复
不好意思,上面的程序在load事件中漏了一句mFlagCanUnLoad = True
hrtc 2006-07-03
  • 打赏
  • 举报
回复
还有种办法是给窗体是否加载加个标志,然后再每个引用控件的地方加上判断,如下
Private mFlagCanUnLoad As Boolean'窗体是否加载

Private Sub Command1_Click()

modUtil.waitTime 1
Randomize (Rnd)

If mFlagCanUnLoad Then'如加载则执行
Text1.Text = Rnd
End If
End Sub

Private Sub Form_Load()
MsgBox "Load"
End Sub

Private Sub Form_Unload(Cancel As Integer)
mFlagCanUnLoad = False
MsgBox "UnLoad"

End Sub
但是这种方法要在每个控件处加判断,工作量大而且效率也降低了,还有没有其他办法.
vbfunner 2006-07-03
  • 打赏
  • 举报
回复
把出错代码关闭了,绝对是可以的.
如果不行的话,你在你程序里加多线程也可以导致程序崩溃这样完全退出程序啊.
还有就是通过获得程序句柄,通过terminate来结束吧.

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧