vb 为什么timer还是会执行
源代码如下,为什么仍然会无限弹窗PrivateSubCommand1_Click()Form1.Timer1.Enabled=TrueEndSubPrivateSubFo...
源代码如下,为什么仍然会无限弹窗
Private Sub Command1_Click()
Form1.Timer1.Enabled = True
End Sub
Private Sub Form_Load()
Form1.Label1.FontSize = 16
Dim a As Long
a = 0
End Sub
Private Sub Timer1_Timer()
If a < 5 Then
Dim b As New Form2
b.Label1.FontSize = 50
b.Label2.FontSize = 25
b.Show
a = a + 1
Else
Form1.Timer1.Enabled = False
End If
End Sub 展开
Private Sub Command1_Click()
Form1.Timer1.Enabled = True
End Sub
Private Sub Form_Load()
Form1.Label1.FontSize = 16
Dim a As Long
a = 0
End Sub
Private Sub Timer1_Timer()
If a < 5 Then
Dim b As New Form2
b.Label1.FontSize = 50
b.Label2.FontSize = 25
b.Show
a = a + 1
Else
Form1.Timer1.Enabled = False
End If
End Sub 展开
3个回答
展开全部
Private Sub Timer1_Timer()
If a < 5 Then
Dim b As New Form2
b.Label1.FontSize = 50
b.Label2.FontSize = 25
b.Show
a = a + 1
Else
Form1.Timer1.Enabled = False
End If
End Sub
这里的a是局部变量,每次end sub之后就没有了,每次进入timer以后都会重新定义变量a,这样a永远=0,所以永远不会到else里面,应该是这样:
dim a as long
Private Sub Command1_Click()
Form1.Timer1.Enabled = True
End Sub
Private Sub Form_Load()
Form1.Label1.FontSize = 16
a = 0
End Sub
Private Sub Timer1_Timer()
timer1.enable=false '一进来先停Timer
If a < 5 Then
Dim b As New Form2
b.Label1.FontSize = 50
b.Label2.FontSize = 25
b.Show
a = a + 1
timer1.enable=true ‘需要的时候再启用timer
End If
End Sub
展开全部
这就是没有Option Explicit的坏处。
你的Dim a As Long是在Form_Load中,是一个私有变量,不能在Timer1_Timer中调用。
Timer1_Timer中的If a < 5 Then,每次执行到这都会重新定义一个变量a,a的值永远会为1,所以不可能出现Form1.Timer1.Enabled = False。
解决方法:
把Dim a As Long放到Form_Load外面。
你的Dim a As Long是在Form_Load中,是一个私有变量,不能在Timer1_Timer中调用。
Timer1_Timer中的If a < 5 Then,每次执行到这都会重新定义一个变量a,a的值永远会为1,所以不可能出现Form1.Timer1.Enabled = False。
解决方法:
把Dim a As Long放到Form_Load外面。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
然后去远足 正解
请把a定义为 窗体级全局变量 在 “通用”那里
请把a定义为 窗体级全局变量 在 “通用”那里
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询