转移系统控制权。private sub Form_Load()
dim i as long
for i=0 to 1000000
  doevents
nexti
end sub
当你点击关闭按钮时可以退出。
如果没有 Doevents ,你就必须等到 For...Next 循环完,才能处理其他事情.

解决方案 »

  1.   

    讓出一點時間,以讓程序可以執行其它的事件。
    command1_click()
       for i=0 to 10
           text1.text=i
           delay(0.1)
       next
    end subsub delay(t as double)
       t1=timer
       while timer-t1<t
          doevents
       wend
    end sub
             
      

  2.   

    http://www.csdn.net/expert/topic/693/693465.xml?temp=.9158441
      

  3.   

    比如我有一段要执行很长时间的代码,但在这段时间内,我又想能控制程序,是应该在这段代码的前面用doenents 还是应该在后面用?比如,我用了form.show ,但是form.show 后会执行很多代码,我是应该在form.show 后调用doevents 还是应该在form.show 前面调用?
      

  4.   

    这样 你先定义一个布尔变量 假如是 a 并a=true
    然后在窗体上放个按钮  事件如下a= not a 
    do until a=false 具体语法自己参考
    如果你不在中间的循环上加入 doevents 的话
    这个按钮可能就根本停不下来
    自己试试
    还要给我讨论的话 给我发短信息
      

  5.   

    隔一些语句就设置一个 Doevents
      

  6.   

    doevents 大概能释放多久的时间?
      

  7.   

    DoEvents的意思是让出cpu时间片先处理其他消息常用方法: 你有一个界面需要弹出, 但在显示前要做很多事情.
    即使你写了Form.Show, 用户也需要等待处理完数据后才能看到界面如果在Form.Show后面加了DoEvents的话, 你会先看到界面, 其实数据还在处理.这只是DoEvents的一种用法, 要注意DoEvents处理其他消息时是否会对当前函数
    用到的全局量或内核对象有影响.
      

  8.   


    DoEvents 函数
          转让控制权,以便让操作系统处理其它的事件。语法DoEvents( )说明DoEvents 函数会返回一个 Integer,以代表 Visual Basic 独立版本中打开的窗体数目,例如,Visual Basic,专业版,在其它的应用程序中,DoEvents 返回 0。DoEvents 会将控制权传给操作系统。当操作系统处理完队列中的事件,并且在 SendKeys 队列中的所有键也都已送出之后,返回控制权。DoEvents 对于简化诸如允许用户取消一个已启动的过程 — 例如搜寻一个文件 — 特别有用。对于长时间过程,放弃控制权最好使用定时器或通过委派任务给 ActiveX EXE 部件来完成。以后,任务还是完全独立于应用程序,多任务及时间片由操作系统来处理。小心 确保以 DoEvents 放弃控制权的过程,在第一次 DoEvents 返回之前,不能再次被其他部分的代码调用;否则会产生不可预料的结果。此外,如果其它的应用程序可能会和本过程以不可预知的方式进行交互操作,那么也不要使用 DoEvents,因为此时不能放弃控制权。
    DoEvents 函数示例
    下列示例在循环中使用 DoEvents 函数,每当循环完成 1000 次时,将执行让给操作系统。DoEvents 返回仅当主应用程序是 Visual Basic时,打开的窗体个数。' 创建一个变量来保存加载的 Visual Basic 可见窗体的个数。
    Dim I, OpenForms
    For I = 1 To 150000   ' 循环开始。
       If I Mod 1000 = 0 Then    ' 如果循环一已完成了 1000 次。
          OpenForms = DoEvents   ' 将执行让给操作系统。
       End If
    Next I   ' 将循环计数器加一。