简单写个例子给,自己完善吧Option Explicit Private OnDrag As Boolean, cx As Long, cy As Long Private Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 1 And OnDrag = False Then Command1.Drag vbBeginDrag cx = X cy = Y OnDrag = True End If End SubPrivate Sub Form_DragDrop(Source As Control, X As Single, Y As Single) If Source Is Command1 Then Command1.Drag vbEndDrag Command1.Move X - cx, Y - cy OnDrag = False End If End Sub
比较喜欢这样写~ ^ ^Private Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim SMode As Integer Static OldX As Single, OldY As Single
SMode = Me.ScaleMode Me.ScaleMode = vbTwips If Button = vbLeftButton Then With Command1 .Move .Left + X - OldX, .Top + Y - OldY End With Else OldX = X OldY = Y End If Me.ScaleMode = SMode End Sub
Private OnDrag As Boolean, cx As Long, cy As Long
Private Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 And OnDrag = False Then
Command1.Drag vbBeginDrag
cx = X
cy = Y
OnDrag = True
End If
End SubPrivate Sub Form_DragDrop(Source As Control, X As Single, Y As Single)
If Source Is Command1 Then
Command1.Drag vbEndDrag
Command1.Move X - cx, Y - cy
OnDrag = False
End If
End Sub
Dim SMode As Integer
Static OldX As Single, OldY As Single
SMode = Me.ScaleMode
Me.ScaleMode = vbTwips If Button = vbLeftButton Then
With Command1
.Move .Left + X - OldX, .Top + Y - OldY
End With
Else
OldX = X
OldY = Y
End If Me.ScaleMode = SMode
End Sub