Private Sub Timer1_Timer()   strTime = Str(Time)
   Label1.Caption = "现在时间是:" + strTime + "." + Str(ms)
   If Label1.Left >= -Label1.Width Then
     Label1.Left = Label1.Left - 20
    Else
      Label1.Left = Form1.Width
    End If
    
    If ms < 9 Then
       ms = ms + 1
    Else
       ms = 0
     End If
     
 为什么那里有减号呢` ”-Label1.Width“ ,后面有要减去20 ,它是怎么比较的呢,后面为什么等于Form1的宽度~,能不能把原理说一下~
这段程序是实现移动字幕的~~~

解决方案 »

  1.   

    具体解释一下:
      If Label1.Left >= -Label1.Width Then
         Label1.Left = Label1.Left - 20
        Else
          Label1.Left = Form1.Width
        End If
    意思是说,只要LABEL依然在窗体中(哪怕是部分)就把位置向左面移动20(估计这个没有把窗体SCALEMODE设为PIXEL)
    如果LABEL的左边距已经在窗体再左面的LABEL宽度之外,那就说明LABEL已经没有显示在窗体上了,这时就把LABEL的左边距设为窗体宽度(此时LABEL就跑到窗体右面去了,然后再继续向左面移动)