如题

解决方案 »

  1.   

    绝大多数VB控件都支持拖放。可以将控件的DragMode设置为手动(默认),使用Drag方法开始拖动操作。例子: 
        Dim oldX As Single, oldY As Single 
        Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single) 
         Source.Move Left + X - oldX, Top + Y - oldY 
        End Sub 
         
        Private Sub Label1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) 
         oldX = X + Left 
         oldY = Y + Top 
         Label1.Drag 1 
        End Sub 
         
        Private Sub Label1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) 
         Label1.Drag 2 
        End Sub
      

  2.   

    或者用API:
    Private Declare Function ReleaseCapture Lib "user32" () As Long
         
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Sub MoveObject(ByVal hWndOfObject As Long)
        ReleaseCapture
        SendMessage hWndOfObject, &HA1, 2, 0
    End SubPrivate Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
        MoveObject Command1.hwnd
    End Sub
      

  3.   

    To : faysky2() 太谢谢了,不过还有一个问题,如果我移动后像得到这个对象的坐标又如何实现呢,我刚才试了一下但是不行,我这样做:
    Private Sub Command1_Click()
      msgbox Label1.Left
    End Sub但是一点反映都没有,怎样能实现呢?要是能解决请你吃饭^_^
      

  4.   

    真是不好意思,又碰到新问题了,我把Label1放到picture框里就移动不了了,为什么呢,能实现吗?
      

  5.   

    写在Command1_MouseUp()里吧放在容器里就不能拖出来了。
      

  6.   

    上面那个问题已经解决,但是Line对象不能按上面的方法不能拖动,不知道怎样实现Line的拖动
      

  7.   

    通过拖动别的控件,移动相应的Line的坐标.