2013-04-05 184 views
2

我可以得到鼠标的坐标,当鼠标向下和向上的获取鼠标坐标不断,而鼠标移动onmousedown事件

private void panel2_MouseDown(object sender, MouseEventArgs e) 
{ 
    mouseClickedX = e.X; 
    mouseClickedY = e.Y; 
} 

    private void panel2_MouseUp(object sender, MouseEventArgs e) 
{ 
    mouseReleaseX = e.X; 
    mouseReleaseY = e.Y; 
} 

但我需要不断的鼠标坐标,当鼠标向下移动,直到鼠标弹起。当鼠标移动时,我不需要坐标,但当鼠标停下并移动时,我需要坐标。怎么做?

编辑:

private void panel2_MouseMove(object sender, MouseEventArgs e) 
     { 
      while (isDragging) { 
       mouseMoveX = e.X; 
       mouseMoveY = e.Y; 
       label1.Text = mouseMoveX.ToString(); 
       label2.Text = mouseMoveY.ToString(); 
      } 
     } 

我使用isDragging真或假onmosueup上下但这只是应用程序挂起。我应该使用计时器还是线程?

+1

快速分析:尝试将'while'更改为if。 – LarsTech 2013-04-05 19:00:30

+0

是的,你必须这样做! – 2013-04-05 19:39:33

回答

2

有一些事情你应该做的:

  1. 添加到您的类名为bool isDragging
  2. 在鼠标按下处理私人布尔字段,设置isDragging = truethis.Capture = true
  3. 在mouseUp处理,设置isDragging = falsethis.Capture = false
  4. 添加MouseMove处理程序。其中,检查if (isDragging),如果它是真的,请按需要回复。您的MouseMove处理程序将随当前的鼠标坐标一起提供。

使用Capture很重要,否则可能会丢失MouseMove和MouseUp消息。

+0

请参阅编辑。我正在使用isDragging true或false onmosueup和down,但这只是挂起应用程序。我应该使用计时器还是线程? – asdfkjasdfjk 2013-04-05 18:57:19

+0

将'while'改为'if'。 – 2013-04-05 19:38:53

3

您需要处理MouseMove并检查鼠标是否关闭。