情况是这样的:Private Sub search_Click()
processinfo.Caption = "正在计算"for i=1 to 100processinfo.Caption = "正在计算第" & i & "项" '问题在这里j=i+100 '这个是一个运算,不是疑问的重点,所以就简单化了。next
processinfo.Caption = "计算结束"end sub以上的 processinfo 是显示运算进程的标签,本意是想,每进行一次运算,都在标签上显示出来已经到什么位置了。就像一个进度条一样的。但是我惊奇的发现,只从点击 search 按钮,一直到程序结束,只显示了最后一条,"计算结束" ,其他的均未显示出来。进度条的目的也就没有实现。请问我该怎么写的呢?我的目的很简单,就是实时的将进度信息显示在界面的某个位置。谢谢。
processinfo.Caption = "正在计算"for i=1 to 100processinfo.Caption = "正在计算第" & i & "项" '问题在这里j=i+100 '这个是一个运算,不是疑问的重点,所以就简单化了。next
processinfo.Caption = "计算结束"end sub以上的 processinfo 是显示运算进程的标签,本意是想,每进行一次运算,都在标签上显示出来已经到什么位置了。就像一个进度条一样的。但是我惊奇的发现,只从点击 search 按钮,一直到程序结束,只显示了最后一条,"计算结束" ,其他的均未显示出来。进度条的目的也就没有实现。请问我该怎么写的呢?我的目的很简单,就是实时的将进度信息显示在界面的某个位置。谢谢。
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
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,很多东西都不懂,在网上这复制一段,那复制一段,所以以后会是这里的常客咯~
processinfo.refresh
转让控制权,以便让操作系统处理其它的事件。
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就可.