vb中怎样让控件移动到窗体边上后自动返回

 我来答
swx1995
2010-06-04 · TA获得超过2696个赞
知道大有可为答主
回答量:1477
采纳率:0%
帮助的人:2336万
展开全部
为了方便使用,已经封装为一个过程

演示:Timer1 水平移动Picture1,每个单位4像素

Private Sub Timer1_Timer()
ControlMove Me.Picture1, 15 * 4, 0 '15*4的这个参数为Twip单位
End Sub

注意:竖直移动为ControlMove ..., ..., 1
以下过程仅能移动一个控件,这个只是演示用。如果要举一反三请自己研究下面的那个过程,然后推而广之。(只能移动一个控件的原因是仅仅为一个控件储存了向什么方向移动的参数[是正过去还是倒过来返回])

以下为需要的过程
Sub ControlMove(Control As Control, MoveStep As Long, MoveDirection As Long)
Static dirxd As Long, diryd As Long

If dirxd = 0 Then dirxd = 1: diryd = 1

Dim w As Long, h As Long
w = Control.Parent.Width: h = Control.Parent.Height

If MoveDirection = 0 Then
If dirxd = 1 Then
If Control.Left + Control.Width + MoveStep < w Then
Control.Left = Control.Left + MoveStep
Else
Control.Left = w - Control.Width
dirxd = -1
End If
Else
If Control.Left - MoveStep > 0 Then
Control.Left = Control.Left - MoveStep
Else
Control.Left = 0
dirxd = 1
End If
End If
Else
If diryd = 1 Then
If Control.Top + Control.Height + MoveStep < h Then
Control.Top = Control.Top + MoveStep
Else
Control.Top = h - Control.Height
diryd = -1
End If
Else
If Control.Top - MoveStep > 0 Then
Control.Top = Control.Top - MoveStep
Else
diryd = 1
End If
End If
End If
End Sub
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2010-06-19
展开全部
去找一本教材看看吧
应该是设置step为1 和 -1
当超出边界的时候改step为-1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式