--------------

解决方案 »

  1.   

    设置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