vb如何让一个label框上下的来回移动

就是要让他从form最上边移到最下边,再从最下边移动回来,如此往复,我觉得用if可以做到,但是我下边编的行不通,移到最下边就没有然后了,大神来帮我这初学者检查检查,或者提... 就是要让他从form最上边移到最下边,再从最下边移动回来,如此往复,我觉得用if可以做到,但是我下边编的行不通,移到最下边就没有然后了,大神来帮我这初学者检查检查,或者提供方法

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
展开
 我来答
zdingyun
推荐于2017-09-23 · 知道合伙人软件行家
zdingyun
知道合伙人软件行家
采纳数:15429 获赞数:48174
1982年上海业余工业大学化工系毕业 现退休

向TA提问 私信TA
展开全部

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

ggaking2012

推荐于2017-09-15 · TA获得超过4.5万个赞
知道顶级答主
回答量:5.5万
采纳率:94%
帮助的人:6906万
展开全部

你不能这样,你一个判断是否向上,一个判断是否向下,向上的判断要向上,然后第二个判断没有超过,继续向下,然后就卡在下面上不来了。。。

你先定义全局一个变量,作为向上或向下的标记,然后用一个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
追问
那按我那样是完全不行吗?
追答
那好吧,你认为我了不行,你还是用你的吧。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阳光的泓济
2014-11-30 · 超过21用户采纳过TA的回答
知道答主
回答量:62
采纳率:0%
帮助的人:14.1万
展开全部
移动字幕.Left = 移动字幕.Left - 1
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式