注册 登录
编程论坛 VB6论坛

通过移动鼠标移动控件,鼠标移动后,控件消失了

shinesun 发布于 2014-09-11 16:42, 613 次点击
在PictureBox内,放置了一个command按钮,现在想实现通过移动鼠标,将该按钮移动到任意的位置。参考下面的代码
程序代码:
Dim x1, y1 As Double

Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

x1 = X
y1 = Y
End Sub

Private Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

If Button = 1 Then
    Command1.Left = Command1.Left + (X - x1)
    Command1.Top = Command1.Top + (Y - y1)
End If

End Sub

但是,现在添加完后,移动command控件后,控件消失了,不知道怎么解决了,求助大家!
2 回复
#2
风吹过b2014-09-11 17:48
没了 发现错误啊。这是我测试用的代码,增加了最后一个的判断事件,其他的照你的代码。

程序代码:

'变量定义
Dim x1 As Single, y1  As Single

Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
x1 = X
y1 = Y
End Sub

Private Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
    Command1.Left = Command1.Left + (X - x1)
    Command1.Top = Command1.Top + (Y - y1)
End If
End Sub

Private Sub Command1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
'放开鼠标后,确保按钮在 Picture 的可见范围内
If Command1.Left < 0 Then Command1.Left = 0
If Command1.Top < 0 Then Command1.Top = 0
If Command1.Left > Picture1.ScaleWidth - Command1.Width Then Command1.Left = Picture1.ScaleWidth - Command1.Width
If Command1.Top > Picture1.ScaleHeight - Command1.Height Then Command1.Top = Picture1.ScaleHeight - Command1.Height
End Sub
#3
shinesun2014-09-15 14:53
我在网上又看到了一种方法,采用的是dragdrop的方法,但是这个方法不太好,被移动的控件的top和left属性等于Y和X值
1