情况是这样的:Private Sub search_Click()
processinfo.Caption = "正在计算"for i=1  to 100processinfo.Caption = "正在计算第" & i & "项"   '问题在这里j=i+100 '这个是一个运算,不是疑问的重点,所以就简单化了。next
processinfo.Caption = "计算结束"end sub以上的 processinfo 是显示运算进程的标签,本意是想,每进行一次运算,都在标签上显示出来已经到什么位置了。就像一个进度条一样的。但是我惊奇的发现,只从点击 search 按钮,一直到程序结束,只显示了最后一条,"计算结束" ,其他的均未显示出来。进度条的目的也就没有实现。请问我该怎么写的呢?我的目的很简单,就是实时的将进度信息显示在界面的某个位置。谢谢。

解决方案 »

  1.   

    运算很快,显示闪烁Option Explicit
        Dim i As Long
        Dim j As Long
    Private Sub search_Click()
        processinfo.Caption = "正在计算"
        For i = 1 To 100000
            j = i + 100 '这个是一个运算,不是疑问的重点,所以就简单化了。
            processinfo.Caption = "正在计算第" & i & "项"   '问题在这里
            DoEvents
            processinfo.Refresh
        Next
        processinfo.Caption = "计算结束"
    End Sub
      

  2.   

    我不是很专业,想如果在过程中加上processinfo.updata不知可行不
      

  3.   


    Option Explicit
        Dim i As Long
        Dim j As Long
    Private Sub search_Click()
        processinfo.Caption = "正在计算"
        For i = 1 To 100000
            j = i + 100 '这个是一个运算,不是疑问的重点,所以就简单化了。
            processinfo.Caption = "正在计算第" & i & "项"   '问题在这里
            
            
            DoEvents '这句什么意思啊,麻烦解释一下,谢谢。我搜索这个函数,好像特别占CPU。不理解也就没用过
            processinfo.Refresh
           Sleep 3000  '让程序挂起3s,应该不闪烁的
        Next
        processinfo.Caption = "计算结束"
    End Sub
    谢谢楼上兄弟解释!刚使用VB,很多东西都不懂,在网上这复制一段,那复制一段,所以以后会是这里的常客咯~
      

  4.   

    processinfo.Caption = "正在计算第" & i & "项"
    processinfo.refresh
      

  5.   

    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   ' 将循环计数器加一。
    在上述代码中,可不用DoEvents,仅使用processinfo.Refresh就可.