设置Command1的dragmode为0(手动),并定义两个变量用于开始拖动时的鼠标位置: Dim cx as Long, cy as Long 在Command1的mousedown事件中记录当前鼠标位置并开始拖动: Command1.Drag 1 cx = X cy = Y 之所以将Command1的DragMode改为手动,是因为在自动模式下是不会触发Command1的MouseDown事件的,当然也就无法记录原始的鼠标位置了。
代码如下: Option Explicit Dim cx As Long, cy As LongPrivate Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Command1.Drag 1 cx = X cy = Y End SubPrivate Sub Form_DragDrop(Source As Control, X As Single, Y As Single) Source.Move X - cx, Y - cy End Sub
Dim cx as Long, cy as Long
在Command1的mousedown事件中记录当前鼠标位置并开始拖动:
Command1.Drag 1
cx = X
cy = Y
之所以将Command1的DragMode改为手动,是因为在自动模式下是不会触发Command1的MouseDown事件的,当然也就无法记录原始的鼠标位置了。
代码如下:
Option Explicit
Dim cx As Long, cy As LongPrivate Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Command1.Drag 1
cx = X
cy = Y
End SubPrivate Sub Form_DragDrop(Source As Control, X As Single, Y As Single)
Source.Move X - cx, Y - cy
End Sub