我两个窗体form1和form2,
form2做成了假的进程条,代码如下
Private Sub Form_Activate()
Call setPic
Call showPic
End SubPrivate Sub setPic()
 Pic1.Move 0, 100, Me.Width, Me.Height / 3
Set Pic2.Container = Pic1
Pic2.AutoRedraw = True
Pic1.ScaleWidth = 1000000
Pic2.Move 0, 0, 0, Pic1.Height
Pic2.BackColor = vbRed '
End SubPrivate Sub showPic()
   Dim i As Long
   For i = 0 To 1000000
   If i = 1000000 Then
       i = 0
    End If
    Pic2.Width = i
    DoEvents '让出CPU
  Next
End Sub我在form1的一个事件中,先show form2,表示过程开始,
然后再调用一个长时间的动作,最后再卸载form2。。
代码大致如下
private sub button_click()
form2.show
call doit() '一个长时间的循环动作
unload form2
end subprivate sub doit()
    dim i as long
    for i=0 to 1000000
     i=i+1
    next
end sub我希望在这个doit()长时间的动作中,show出form2的假的进度过程让用户知道。。
可是我发现在button.click()的动作中,只能够很好的show出form2里的虚假的进度,
但是一直不能往下执行doit(),都在form2的showPic()里执行。。
请教,这个问题应该如何解决呢??怎么既能够让虚假的进度条很好允许,又能让doit()
这个动作也运行呢??希望再次得到你的帮助。。万分感谢。谢谢

解决方案 »

  1.   

    在进度条那里干吗还循环呢?? (我没有细看你的做法。)我设想的进度条方案是这样的,也比较简单:
    设定一个全局变量为进度值;
    进度条这方有个timer,每隔段时间取这个进度值,然后显示进度;
    主程序方:
    开始循环前show出进度条,打开timer, 
    循环中间,改变全局进度值,加doevents。
    循环完后,关闭timer,unload进度条。
      

  2.   

    在进度条那里干吗还循环呢?? (我没有细看你的做法。)我设想的进度条方案是这样的,也比较简单:
    设定一个全局变量为进度值;
    进度条这方有个timer,每隔段时间取这个进度值,然后显示进度;
    主程序方:
    开始循环前show出进度条,打开timer, 
    循环中间,改变全局进度值,加doevents。
    循环完后,关闭timer,unload进度条。
      

  3.   

    不用form2,那样不好控制直接在form1放一个PictureBox,上面放进度条
    private sub button_click()
    PictureBox.show
    end sub
      

  4.   

    我的form2是个虚假的进程条,一直不停的滚动,一直到代码主动unload form2,就表示过程结束了。
    只是,现在我这个控制权交不回form1里,一直不能执行下一句的长时间的动作所有请教大家。。