vb如何让一个label框上下的来回移动
Option Explicit
Private Sub Timer1_Timer()
If Label1.Top <= Form1.Height - Label1.Height Then
Timer1.Enabled = True
Timer2.Enabled = False
Label1.Top = Label1.Top + 50
End If
End Sub
Private Sub Timer2_Timer()
If Label1.Top >= Form1.Height - Label1.Height Then
Timer2.Enabled = True
Timer1.Enabled = False
Label1.Top = Label1.Top - 50
End If
End Sub 展开
推荐于2017-09-23 · 知道合伙人软件行家
VB可使用Timer控件实现将Label控件在窗体上下来回移动。
Timer 控件,通过引发 Timer 事件,Timer 控件可以有规律地隔一段时间执行一次代码。
Top 属性,返回或设置对象的内顶部和它的容器的顶边之间的距离。
实例代码:
Private Sub Form_Load()
Timer2.Enabled = False
Timer1.Enabled = True
Timer1.Interval = 500
Timer2.Interval = 500
End Sub
Private Sub Timer1_Timer()
Label1.Top = Label1.Top + 100
If Label1.Top + Label1.Height > Me.Height Then
Timer1.Enabled = False
Timer2.Enabled = True
End If
End Sub
Private Sub Timer2_Timer()
Label1.Top = Label1.Top - 100
If Label1.Top <= 0 Then
Timer2.Enabled = False
Timer1.Enabled = True
End If
End Sub
实例代码2:
Dim bl As Boolean
Private Sub Form_Load()
bl = 0
Me.Timer1.Interval = 500
End Sub
Private Sub Timer1_Timer()
If bl = 0 Then '向下
Label1.Top = Label1.Top + 500
If Label1.Top >= Form1.ScaleHeight Then
bl = 1 '向上
End If
Else '向上
Label1.Top = Label1.Top - 500
If Label1.Top <= 0 Then
bl = 0 '向下
End If
End If
End Sub
你不能这样,你一个判断是否向上,一个判断是否向下,向上的判断要向上,然后第二个判断没有超过,继续向下,然后就卡在下面上不来了。。。
你先定义全局一个变量,作为向上或向下的标记,然后用一个TIMER控件和Label控件就行了,判断代码如下(已测试通过):
Dim bl
Private Sub Form_Load()
bl = 0
Me.Timer1.Interval = 500
End Sub
Private Sub Timer1_Timer()
If bl = 0 Then '向下
Label1.Top = Label1.Top + 50
If Label1.Top >= Form1.ScaleHeight Then
bl = 1 '向上
End If
Else '向上
Label1.Top = Label1.Top - 50
If Label1.Top <= 0 Then '到头了
bl = 0 '向下
End If
End If
End Sub
那按我那样是完全不行吗?
那好吧,你认为我了不行,你还是用你的吧。
If 移动字幕.Right < 0 Then 移动字幕.Left = Me.Width
对比之上的移动代码可知
移动字幕.Top = 移动字幕.Top - 4
If 移动字幕.Bottom < 0 Then 移动字幕.Top = Me.Height
这样在一个定时器中就可以了
或
移动字幕.Top = 移动字幕.Top + 4
If 移动字幕.Bottom > Me.Height Then 移动字幕.Top = 0