VB中点击一个按钮程序运行,如何弹出个显示个消息框提示正在运行,再点击另外一个按钮让他停止运行

Private Sub Command1_Click()
Dim shuzhi As Double
Dim shuzhi1 As Double
For shuzhi = 1 To 60000
For shuzhi1 = 1 To 20000
Next shuzhi1
Next shuzhi
Text1.Text = "完成"
End Sub

Private Sub Command2_Click()
Text1.Text = ""
取消运行的程序该怎么写
End Sub
上面是个循环程序,点击Command1后程序进入循环状态,这时怎么使他弹出个无按钮的信息提示框,显示正在运行四个字。点击Command2后让他停止循环事件,Command2的程序该如何写。

如果我要是告诉你编程思路,你肯定会把脑袋都拍烂,你就会明白编程,靠的是什么?编程思想!哈哈哈,只有想不到的,没有做不到的。

你是想弹出无数个提示框,点击另外一个按钮就让它停止弹出对话框对不对?

很简单啊,你在循环的时候加入一个判断条件就可以了(对不对?)条件满足才循环,条件一旦不满足就不循环就是了。把你的程序改成如下:
Dim Switch as Boolean '这条很重要,定义一个全局变量,作用就是判断.
Private Sub Form_Load()
Switch = True
End Sub

Private Sub Command1_Click()
Dim shuzhi As Double
Dim shuzhi1 As Double
For shuzhi = 1 To 60000
For shuzhi1 = 1 To 20000
if Switch=False Then Exit Sub
Next shuzhi1
Next shuzhi
Text1.Text = "完成"
End Sub

Private Sub Command2_Click()
Text1.Text = ""
Switch=False
'取消运行的程序该怎么写
End Sub

是不是晃然大悟,代码我没调试,你自己试一下,知道编程思想,实现起来我相信你有更好的办法的.
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-02-24
Private stopIt As Boolean

Private Sub Command1_Click()
Dim shuzhi As Double
Dim shuzhi1 As Double
Text1.Text = "正在运行"
For shuzhi = 1 To 60000
If stopIt Then Exit Sub
DoEvents
For shuzhi1 = 1 To 20000
Next shuzhi1
Next shuzhi
Text1.Text = "完成"
End Sub

Private Sub Command2_Click()
Text1.Text = "中断运行"
stopIt = True
End Sub追问

这个最靠谱,但是还是没实现弹出个信息提示正在运行的代码,那个弹出信息提示框怎么实现呢?

追答

因为显示了 MsgBox 就不能点 Form1 的任何键,不能点 Command2,我用 Text1 代替 MsgBox 了,如果你不愿意,那就要自己做一个 MsgBox!就用 Form2 来做吧:

Private stopIt As Boolean

Private Sub Command1_Click()
Dim shuzhi As Double
Dim shuzhi1 As Double
Text1.Text = "正在运行"
Form2.Left = Form1.Left + 3000 '自己在 Form2 弄点 Text,Command 控件,像 MsgBox 那样
Form2.Top = Form1.Top + 1000
Form2.Show
For shuzhi = 1 To 60000
If stopIt Then Exit Sub
DoEvents
For shuzhi1 = 1 To 20000
Next shuzhi1
Next shuzhi
Text1.Text = "完成"
End Sub

Private Sub Command2_Click()
Text1.Text = "中断运行"
Form2.Hide
stopIt = True
End Sub

本回答被提问者采纳
第2个回答  2011-02-24
先定义一个外部变量比如 Dim bStop As Boolean
然后在你的循环里面加上个暂停的循环。
While (bStop)
'sleep之类的延时函数吧
End While
然后在其他的地方通过修改bStop 的值就可以暂停或者开启你的循环了。
没VB的编程环境了,其他语言是要把你的那个循环加到线程里,不然执行你的循环时候动不了其他的操作(卡住),所以你还要去研究下线程。不过不知道VB里面用doevents是不是可以不用使用线程,你自己测试下吧。
第3个回答  2011-02-24
基本上只靠VB无法实现,因为VB不支持多线程,所以进入循环后程序会一直卡在显示第二个窗口的地方,此时即使设置了第二个窗口非模态显示,取消按钮还是不能点击的.直到程序运行完毕.
除非用VC写个多线程的COM组件,然后在线程中显示窗口就可以了.
相似回答