在mousemove onmousedown上连续获取鼠标坐标

时间:2013-04-05 18:03:22

标签: c# winforms

当鼠标向下和向上时,我可以获得鼠标坐标

  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 true或false onmosueup and down但这只是挂起应用程序。我应该使用计时器还是线程?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

你应该做一些事情:

  1. 向您的班级添加名为bool isDragging
  2. 的私有布尔字段
  3. 在MouseDown处理程序中,设置isDragging = truethis.Capture = true
  4. 在MouseUp处理程序中,设置isDragging = falsethis.Capture = false
  5. 添加MouseMove处理程序。在其中,检查if (isDragging),如果是,请按您的意愿回复。您的MouseMove处理程序将随当前的鼠标坐标一起提供。
  6. 使用Capture很重要,否则您可能会丢失MouseMove和MouseUp消息。