2014-10-05 66 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