vb菜鸟级问题,谢谢
PrivateSubCommand1_Click()Timer1.Enabled=TrueEndSubPrivateSubCommand2_Click()Timer1.E...
Private Sub Command1_Click()
Timer1.Enabled = True
End Sub
Private Sub Command2_Click()
Timer1.Enabled = False
End Sub
Private Sub Timer1_Timer()
Label1.Left = Label1.Left + 100
End Sub
这个代码 的意思是 点击按钮1使,标签1的左边距+100 点击按钮2停止
但是 在我运行的时候,标签1从 最左面 无限向最右面移动
我想实现,当标签1移动到 窗口的最右端时,使其向窗口最左端移动。移动到最左端 再向最右端移动。
我把下面这段代码 写在timer过程里,可是当满足条件时,标签却不动了。。怎么解决? 谢谢
If Label1.Left > 300 Then
Label1.Left = Label1.Left - 100
Else
Label1.Left = Label1.Left + 100
End If
If Label1.Left < 10 Then
Label1.Left = Label1.Left + 100
Else
Label1.Left = Label1.Left - 100
End If
我这样写 可能方法笨,有好方法 也说下 谢谢了
方瀚 帮我想想把,我试了 好几种写法,不是不动 就是在100的范围里 动, 先谢谢你
不用考虑 窗口大小变化 等复杂问题 F5中...
那2个 按钮的点击 可以去掉
2楼你那个 就属于 在100范围里移动的那种,不行啊 展开
Timer1.Enabled = True
End Sub
Private Sub Command2_Click()
Timer1.Enabled = False
End Sub
Private Sub Timer1_Timer()
Label1.Left = Label1.Left + 100
End Sub
这个代码 的意思是 点击按钮1使,标签1的左边距+100 点击按钮2停止
但是 在我运行的时候,标签1从 最左面 无限向最右面移动
我想实现,当标签1移动到 窗口的最右端时,使其向窗口最左端移动。移动到最左端 再向最右端移动。
我把下面这段代码 写在timer过程里,可是当满足条件时,标签却不动了。。怎么解决? 谢谢
If Label1.Left > 300 Then
Label1.Left = Label1.Left - 100
Else
Label1.Left = Label1.Left + 100
End If
If Label1.Left < 10 Then
Label1.Left = Label1.Left + 100
Else
Label1.Left = Label1.Left - 100
End If
我这样写 可能方法笨,有好方法 也说下 谢谢了
方瀚 帮我想想把,我试了 好几种写法,不是不动 就是在100的范围里 动, 先谢谢你
不用考虑 窗口大小变化 等复杂问题 F5中...
那2个 按钮的点击 可以去掉
2楼你那个 就属于 在100范围里移动的那种,不行啊 展开
5个回答
展开全部
不笨,我以前也经常干这种事
按照你补充的代码就会造成:
label1移动到最左边时往右移100
此时label1的left值为4100
那么下一次Label1.Left = Label1.Left + 100时left值又会达到4200
然后触发条件使label向右移,死循环
(⊙o⊙)…额,你咋又改了
我的代码,
再等等,马上想好了,现在担心老妈突然回来
方案一:定义全局变量
Private D As Integer
Private Sub Form_Load()
D = 1
End Sub
Private Sub Timer1_Timer()
If D = 1 Then
Label1.Left = Label1.Left + 100
ElseIf D = 0 Then
Label1.Left = Label1.Left - 100
End If
If Label1.Left > 3600 Then
D = 0
ElseIf Label1.Left < 0 Then
D = 1
End If
End Sub
方案二:利用FOR...NEXT循环语句
Public Sub Delay(ByVal ParTime As Long)
Dim tim
tim = Timer
While Timer - tim < ParTime
DoEvents
Wend
End Sub
Private Sub Timer1_Timer()
Dim a
For a = Label1.Left To 3600 Step 100
Label1.Left = a
Delay 1
Next
For a = Label1.Left To 0 Step -1
Label1.Left = a
Delay 1
Next
End Sub
方案三:两个timer控件配合
Private Sub Form_Load()
Timer2.Enabled = False
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
Label1.Left = Label1.Left + 100
If Label1.Left > 3600 Then
Timer2.Enabled = True
Timer1.Enabled = False
End If
End Sub
Private Sub Timer2_Timer()
Label1.Left = Label1.Left - 100
If Label1.Left < 0 Then
Timer1.Enabled = True
Timer2.Enabled = False
End If
End Sub
方案四:用textbox控件做全局变量
Private Sub Form_Load()
Text1.Text = "0"
End Sub
Private Sub Text1_Change()
End Sub
Private Sub Timer1_Timer()
If Text1.Text = 1 Then
Label1.Left = Label1.Left + 100
ElseIf Text1.Text = 0 Then
Label1.Left = Label1.Left - 100
End If
If Label1.Left > 3600 Then
Text1.Text = 0
ElseIf Label1.Left < 0 Then
Text1.Text = 1
End If
End Sub
按照你补充的代码就会造成:
label1移动到最左边时往右移100
此时label1的left值为4100
那么下一次Label1.Left = Label1.Left + 100时left值又会达到4200
然后触发条件使label向右移,死循环
(⊙o⊙)…额,你咋又改了
我的代码,
再等等,马上想好了,现在担心老妈突然回来
方案一:定义全局变量
Private D As Integer
Private Sub Form_Load()
D = 1
End Sub
Private Sub Timer1_Timer()
If D = 1 Then
Label1.Left = Label1.Left + 100
ElseIf D = 0 Then
Label1.Left = Label1.Left - 100
End If
If Label1.Left > 3600 Then
D = 0
ElseIf Label1.Left < 0 Then
D = 1
End If
End Sub
方案二:利用FOR...NEXT循环语句
Public Sub Delay(ByVal ParTime As Long)
Dim tim
tim = Timer
While Timer - tim < ParTime
DoEvents
Wend
End Sub
Private Sub Timer1_Timer()
Dim a
For a = Label1.Left To 3600 Step 100
Label1.Left = a
Delay 1
Next
For a = Label1.Left To 0 Step -1
Label1.Left = a
Delay 1
Next
End Sub
方案三:两个timer控件配合
Private Sub Form_Load()
Timer2.Enabled = False
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
Label1.Left = Label1.Left + 100
If Label1.Left > 3600 Then
Timer2.Enabled = True
Timer1.Enabled = False
End If
End Sub
Private Sub Timer2_Timer()
Label1.Left = Label1.Left - 100
If Label1.Left < 0 Then
Timer1.Enabled = True
Timer2.Enabled = False
End If
End Sub
方案四:用textbox控件做全局变量
Private Sub Form_Load()
Text1.Text = "0"
End Sub
Private Sub Text1_Change()
End Sub
Private Sub Timer1_Timer()
If Text1.Text = 1 Then
Label1.Left = Label1.Left + 100
ElseIf Text1.Text = 0 Then
Label1.Left = Label1.Left - 100
End If
If Label1.Left > 3600 Then
Text1.Text = 0
ElseIf Label1.Left < 0 Then
Text1.Text = 1
End If
End Sub
展开全部
Private Sub Timer1_Timer()
If Label1.Left > 300 Then
Label1.Left = Label1.Left - 100
ElseIf Label1.Left < 10 Then
Label1.Left = Label1.Left + 100
End If
End Sub
你把补充的那些话改成这样如何,试试哦
If Label1.Left > 300 Then
Label1.Left = Label1.Left - 100
ElseIf Label1.Left < 10 Then
Label1.Left = Label1.Left + 100
End If
End Sub
你把补充的那些话改成这样如何,试试哦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这样写试试:
Private D as Integer
Private Sub Form_load()
D=1
End Sub
Private Sub Timer1_Timer()
If Label1.Left >= 4200 or Label1.Left <= 0 Then
D= -1 * D
End If
Label1.Left = Label1.Left + 100
End Sub
Private D as Integer
Private Sub Form_load()
D=1
End Sub
Private Sub Timer1_Timer()
If Label1.Left >= 4200 or Label1.Left <= 0 Then
D= -1 * D
End If
Label1.Left = Label1.Left + 100
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
哈,楼主碰到的问题相信每一个学习编程的人都碰到过。你发上来的那前后共四段程序中,前两段是一点问题都没有,问题在第三段上,后来发的第四段对第三段的补充,虽然麻烦了一些,可以看出楼主是动了脑筋了,呵呵。但还是有一些问题。我给你重新写了一下,现在全发给你吧!已经运行过了。有问题或不明白的地方请提出来!
Dim M As Boolean
Private Sub Command1_Click()
Timer1.Enabled = True
End Sub
Private Sub Command2_Click()
Timer1.Enabled = False
End Sub
Private Sub Timer1_Timer()
If M Then
Label1.Left = Label1.Left + 100
If Label1.Left > Form1.ScaleWidth - Label1.Width Then M = Not M
Else
Label1.Left = Label1.Left - 100
If Label1.Left < 100 Then M = Not M
End If
End Sub
Private Sub Form_Load()
M = True
Timer1.Interval = 100
Timer1.Enabled = False
End Sub
Dim M As Boolean
Private Sub Command1_Click()
Timer1.Enabled = True
End Sub
Private Sub Command2_Click()
Timer1.Enabled = False
End Sub
Private Sub Timer1_Timer()
If M Then
Label1.Left = Label1.Left + 100
If Label1.Left > Form1.ScaleWidth - Label1.Width Then M = Not M
Else
Label1.Left = Label1.Left - 100
If Label1.Left < 100 Then M = Not M
End If
End Sub
Private Sub Form_Load()
M = True
Timer1.Interval = 100
Timer1.Enabled = False
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
If Label1.Left > 300 Then
Label1.Left = 0
Else
Label1.Left = Label1.Left + 100
End If
就这一句就可以了,当标签移动最右边时,那LABEL.LEFT的值就肯定大于300了,那就把LEFT的值变为0,就是又弹回窗体的最左边,然后再重新移动到右边,你把我的代码复制过去试试就明白了
Label1.Left = 0
Else
Label1.Left = Label1.Left + 100
End If
就这一句就可以了,当标签移动最右边时,那LABEL.LEFT的值就肯定大于300了,那就把LEFT的值变为0,就是又弹回窗体的最左边,然后再重新移动到右边,你把我的代码复制过去试试就明白了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询