vb移动窗体的问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 14:17:48
Dim a1 As Date
Dim a2 As Date
Dim a3 As Date
Form1.Left = b
a1 = Format(Time, "ss")
a3 = Format(Time, "ss")
4:
a2 = Format(Time, "ss")
If a2 - a3 = 0 Then GoTo 4
a1 = Format(Time, "ss")
Form1.Left = Form1.Left + 1
If Form1.Left <> b + 5 Then GoTo 4

我想要窗体慢慢的移动到指定位置,为什么上面代码一运行,窗体就直接变到左变到啊

你这段代码本身思想就不好,慢慢的移动 除非是DirectX编程,其他情况请使用Timer而不是直接用循环,否则CPU占用率会很高

给你一段完整代码供参考
窗体上什么也不用放,直接将代码粘入即可

Private WithEvents Timer1 As Timer

Private Sub Form_Load()
Set Timer1 = Controls.Add("VB.Timer", "Timer1")
Me.Left = 0
Timer1.Interval = 50 '代表每50毫秒窗体移动一次
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
If Me.Left + Me.Width < Screen.Width Then
Me.Left = Me.Left + 10 * Screen.TwipsPerPixelX '这个10 代表每次移动10像素
Else
Timer1.Enabled = False
End If
End Sub

就这么简单,什么变量都不用设置

你可以通过修改 上面的 50 和10 这两个数值改变窗体移动速度和平滑程度

如果你实在不想用Timer,或者实在不能用Timer(此种情况很少但存在,一般是要保证移动绝对平滑),请加QQ 476554861,我教你用占用CPU很少且高精度的计时方法

因为这句
Form1.Left = b
从代码看,b未定义,所以初始值=0,所以窗体初始位置在左边!!

加一个TIME控件