2014-10-05 67 views
0

我有一個拖動&拖放的問題。我有代碼:C#拖放標籤

​​

當我嘗試移動它時,標籤開始嚇壞了。我認爲問題出在

void labelWorker_MouseMove(object sender, MouseEventArgs e) 
    { 
     Label labelWorker = (Label)sender; 
     if (isDragged) 
     { 
      Point newPoint = labelWorker.PointToScreen(new Point(e.X, e.Y)); 
      newPoint.Offset(ptOffset); 
      labelWorker.Location = newPoint; 
     } 
    } 

回答

0

好的。我只是做了它:)

bool clicked = false; 
    int iOldX; 
    int iOldY; 
    int iClickX; 
    int iClickY; 
    void labelWorker_MouseDown(object sender, MouseEventArgs e) 
    { 
     Label labelWorker = (Label)sender; 
     if (e.Button == MouseButtons.Left) 
     { 
      Point p = ConvertFromChildToForm(e.X, e.Y, labelWorker); 
      iOldX = p.X; 
      iOldY = p.Y; 
      iClickX = e.X; 
      iClickY = e.Y; 
      clicked = true; 
     } 
    } 

    void labelWorker_MouseMove(object sender, MouseEventArgs e) 
    { 
     Label labelWorker = (Label)sender; 
     if (clicked) 
     { 
      Point p = new Point(); // New Coordinate 
      p.X = e.X + labelWorker.Left; 
      p.Y = e.Y + labelWorker.Top; 
      labelWorker.Left = p.X - iClickX; 
      labelWorker.Top = p.Y - iClickY; 
     } 
    } 

    void labelWorker_MouseUp(object sender, MouseEventArgs e) 
    { 
     clicked = false; 
    } 

    private Point ConvertFromChildToForm(int x, int y, Control control) 
    { 
     Point p = new Point(x, y); 
     control.Location = p; 
     return p; 
    } 
+0

什麼改變?你是如何解決它的? – 2014-10-05 18:45:42

+0

我爲mouseup,mousemove和mousedown寫了新的代碼。鼠標左鍵關閉時,標籤正在隨鼠標移動而沒有任何問題。 – Kafus 2014-10-05 19:33:58