2

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

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

4

2 回答 2

3

您需要处理MouseMove并检查鼠标是否向下。

于 2013-04-05T18:04:10.333 回答
2

你应该做几件事:

  1. 向您的班级添加一个名为的私有布尔字段bool isDragging
  2. 在 MouseDown 处理程序中,设置isDragging = truethis.Capture = true
  3. 在 MouseUp 处理程序中,设置isDragging = falsethis.Capture = false
  4. 添加一个 MouseMove 处理程序。在其中,检查if (isDragging),如果它是真的,按照你的意愿作出回应。您的 MouseMove 处理程序将提供当前鼠标坐标。

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

于 2013-04-05T18:17:09.880 回答