工程1有FORM1,FORM2两个窗体,对FORM1编程:
Private Sub Form_Load()
Dim i, j As Integer
For i = 1 To 10000
Do While DoEvents
For j = 1 To 10000
Next j
Exit Do
Loop
Next i
Form2.Show
End Sub
想实现的效果是:载入FORM1后停留一会儿,再显示FORM2
但执行代码的效果却是载入FORM1后马上显示FORM2,请问哪里有问题?
Private Sub Form_Load()
Dim i, j As Integer
For i = 1 To 10000
Do While DoEvents
For j = 1 To 10000
Next j
Exit Do
Loop
Next i
Form2.Show
End Sub
想实现的效果是:载入FORM1后停留一会儿,再显示FORM2
但执行代码的效果却是载入FORM1后马上显示FORM2,请问哪里有问题?
Dim i, j As Integer
Show
For i = 1 To 1000
For j = 1 To 1000
DoEvents
Next j
Next i
Form2.Show
End Sub
Load Form1
Form1.Show
Sleep 5000
Load Form2
Form2.Show
End Sub
to daisy8675:这种方法我差不多知道,我是想用除这种方法外的另一种解决这个问题,不过又学了一个SLEEP,就是不知道既然有SLEEP,干嘛还用那些循环语句拖延时间呢?
1、Do While DoEvents这句不对,当有事件发生时才返回True,没事件,那Do循环将根本不执行;
2、这种使用DoEvents方法很危险,Form_Load过程在执行中,Form1强制显示,此时若卸载窗体,会可能引起窗体隐性加载的问题,导致窗体无法完成卸载。
3、若你只想延时,并在延时中不接受用户响应,那你可用Sleep或不加DoEvents的循环;若你想延时期间不让程序锁定,并接受用户响应,那根本不能用此法,用个简单的Timer控件完成就行了。
4、Dim i, j As Integer这种声明不对,i实际被声明成了Variant变量,Variant用于循环变量会奇慢无比的。这种不良习惯一定要改!