CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  控件

窗体自动加载问题

楼主hrtc()2006-07-03 11:40:16 在 VB / 控件 提问

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 问题点数:50、回复次数:6Top

1 楼hrtc()回复于 2006-07-03 11:46:46 得分 0

还有种办法是给窗体是否加载加个标志,然后再每个引用控件的地方加上判断,如下  
  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  
  但是这种方法要在每个控件处加判断,工作量大而且效率也降低了,还有没有其他办法.Top

2 楼hrtc()回复于 2006-07-03 11:49:12 得分 0

不好意思,上面的程序在load事件中漏了一句mFlagCanUnLoad   =   TrueTop

3 楼vbfunner(超级糖醋五花大瘦肉)回复于 2006-07-03 12:24:35 得分 30

写一个错误代码,退出时运行.就可以了,把错误捕获了.然后关闭.Top

4 楼hrtc()回复于 2006-07-03 12:28:09 得分 0

不行,代码如下  
  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   SubTop

5 楼vbfunner(超级糖醋五花大瘦肉)回复于 2006-07-03 21:54:19 得分 20

把出错代码关闭了,绝对是可以的.  
  如果不行的话,你在你程序里加多线程也可以导致程序崩溃这样完全退出程序啊.  
  还有就是通过获得程序句柄,通过terminate来结束吧.Top

6 楼hrtc()回复于 2006-07-04 06:40:26 得分 0

不是想结束程序,只想卸载其中一个form,但是这个form上的控件可能在被卸载后仍然被引用,如上程序,然后又被重新加载,怎么能防止form被重新加载呢?比如上面程序waittime是做1秒的doevents,这期间unload   form,但是该方法仍会执行,调到text1.text=rnd时form又会被加载。Top

相关问题

关键词

得分解答快速导航

  • 帖主:hrtc
  • vbfunner
  • vbfunner

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo