Private Sub Command1_Click() Select Case Command1.Caption Case "开始" Command1.Caption = "停止" '开始运行的代码 Case "停止" Command1.Caption = "开始" '停止运行的代码 End Select End SubPrivate Sub Form_Load() Command1.Caption = "开始" End Sub
我猜想你的计算应该是包含一个或几个大循环吧,那么你可以用类似下面的原型来作:窗体级变量: dim bStop as boolean dim bStoped as boolean计算函数: function computeSomething() for i=1 to 100000000000000000 ;开玩笑了啦 if bStop then goto hExit end if
doevents do large compute.... next hExit: bStoped=True exit function按钮: sub btnStop_Click() bStoped=False bStop=true doevents
while not bStoped doevents wend btnStop.enable=false end sub以上只是一个原型,一般情况,我们只用到了一个bStop这个标志,即只需通知程序的另一部分(也可以理解为另一个线程)要停止了,但为了防止停止工作需要很长时间,或者“do large compute....”这一部分需要很长时间,所以使用了另一个标志来通知按钮是否已经正常停止了。 这类程序还需要注意的就是doevents的使用,滥用会导致未知的错误或结果,所以使用的地方一定要合适。
可以判断CAPTION
也可以定义一个BOOL变量
根据变量也可以判断出来
Select Case Command1.Caption
Case "开始"
Command1.Caption = "停止"
'开始运行的代码
Case "停止"
Command1.Caption = "开始"
'停止运行的代码
End Select
End SubPrivate Sub Form_Load()
Command1.Caption = "开始"
End Sub
dim bStop as boolean
dim bStoped as boolean计算函数:
function computeSomething()
for i=1 to 100000000000000000 ;开玩笑了啦
if bStop then
goto hExit
end if
doevents do large compute....
next hExit:
bStoped=True
exit function按钮:
sub btnStop_Click()
bStoped=False
bStop=true
doevents
while not bStoped
doevents
wend btnStop.enable=false
end sub以上只是一个原型,一般情况,我们只用到了一个bStop这个标志,即只需通知程序的另一部分(也可以理解为另一个线程)要停止了,但为了防止停止工作需要很长时间,或者“do large compute....”这一部分需要很长时间,所以使用了另一个标志来通知按钮是否已经正常停止了。
这类程序还需要注意的就是doevents的使用,滥用会导致未知的错误或结果,所以使用的地方一定要合适。