我做了一个测试程序,后面要做大量的工作,但是没有界面,这个时候我想显示一个提示信息,告诉用户,程序在运行,不是死了,请等待,如图:
http://www.zhong-cheng.cn/backzhong/testt.jpg
现在是提示出来了,但是后面程序不执行;难道这个也要多线程马?没有做过,所以问问?

解决方案 »

  1.   

    可以用一个 
    if !完成 then
    label1.caption="程序正在处理请等待....."
    else 
    label1.caption="程序完成"
    end if
      

  2.   

    如果你后台做的工作是一个比较大的循环,那么可以先开一个提示窗体放个进度条什么的循环体内对进度条进行控制让界面有点动作就可以了。如果你后台是在做一个比较长时间的等待比如说访问数据库,这种阻塞式的等待就比较麻烦了,多线程是其中一种解决方案。我对待这种阻塞式等待的办法是弹出一个窗体并且放置一个gif动画,不过这个比较麻烦,要将窗体封装在DLL里面才能保证动画正常运作。
    去年我有回答过类似的问题,当时我给楼主作了一个示例工程,刚才找了找,还在硬盘上,如果搂主需要的话可以和我QQ联系:71429660
      

  3.   

    不要多线程。
    当你的程序需要运行很长的时间时,建议用DoEvents 语句,
    从当前程序中跳出来,可以让CPU处理其它事件。而进度条就可以根据你的程序运行时间或量度来变化。
      

  4.   

    建一个窗体作为提示信息,比如:runmsg_Form1Private Sub Command1_Click()
    On Error Resume Next
    runmsg_Form1.Show
    Call 你的运行代码
    DoEvents
    Unload runmsg_Form1
    'MsgBox "运行完毕!"
    End Sub
      

  5.   

    新建一个窗体form1,放入一个进度条控件pb1
    设置Form1.BorderStyle = 0,去掉标题栏
    把窗口调到和pb1一样大Private Sub Command1_Click()
      On Error Resume Next
      Form1.Show ,me
      For i = 0 To 100000
        Form1.pb1.Value = i * (Form2.pb1.Max - Form2.pb1.Min) / 100000
        Call 你的运行代码
      Next
      Unload Form1
    End Sub
      

  6.   

    具体例子:
    建一个窗体作为提示信息(里面加label,picture等),比如:runmsg_Form1Private Sub Command1_Click()
    runmsg_form1.Show
    DoEventsFor i = 1 To 10000000
    s = s + i
    Next
    DoEvents
    Unload runmsg_form1
    MsgBox "运行完毕!"
    End Sub
      

  7.   

    具体例子:
    建一个窗体作为提示信息(里面加label,picture等),比如:runmsg_Form1Private Sub Command1_Click()
    runmsg_form1.Show
    DoEventsFor i = 1 To 10000000
    s = s + i
    NextDoEvents
    Unload runmsg_form1
    MsgBox "运行完毕!" & "1到10000000的和是:" & s
    End Sub
      

  8.   

    Dim rtn As Long
        rtn = SetWindowPos(frmWait.hWnd, -1, 0, 0, 0, 0, 3)
        frmWait.Show
        ...你要实行的代码
        Unload frmWait
    'frmWait为自己建立的一个等待窗体
      

  9.   

    chewinggum(口香糖·把减肥列入下一个五年计划) 说的正解,如果你后台做的是循环用DoEvents 语句,如果你后台是在做一个比较长时间的等待的,就用多线程
      

  10.   

    我的代码如下:(我的想法是运行runtest的同时,autot中的代码也可以运行,就是runtest没有关闭,不知道可不可以实现?)
    Private Sub autotest_Click()
    runtest.Show 1
    autot.Show
    End Subruntest代码:
    Dim i As Integer
    Private Sub Form_Load()
    i = 1
    End Sub
    Private Sub Timer1_Timer()
    i = i + 1
    Dim j As Integer
    j = i Mod 6
    Select Case j
    Case 0
        Label2.Caption = "¡ñ"
    Case 1
         Label2.Caption = "¡ñ¡ñ"
    Case 2
         Label2.Caption = "¡ñ¡ñ¡ñ"
    Case 3
         Label2.Caption = "¡ñ¡ñ¡ñ¡ñ"
    Case 4
         Label2.Caption = "¡ñ¡ñ¡ñ¡ñ¡ñ"
    Case 5
         Label2.Caption = "¡ñ¡ñ¡ñ¡ñ¡ñ¡ñ"
      
    End SelectEnd Sub