退出mouseDown事件的while循环

本文关键字:while 循环 事件 mouseDown 退出 | 更新日期: 2023-09-27 18:11:00

我正试图使我的表单,它没有边界,可移动,按住鼠标左键并在释放鼠标按钮时退出while循环。但是我现在的代码并没有在释放时退出循环。

    private void Form1_MouseDown(object sender, MouseEventArgs e)
    {
        mouseDown = true;
        while (mouseDown)
        {
            mouseX = MousePosition.X;
            mouseY = MousePosition.Y - 30;
            this.SetDesktopLocation(mouseX, mouseY);
            if (e.Button != MouseButtons.Left)
                mouseDown = false;
        }

我也尝试添加一个mouseUp事件,但它不能发生,只要mouseDown是活动的。

    private void Form1_MouseUp(object sender, MouseEventArgs e)
    {
        mouseDown = true;
    }

退出mouseDown事件的while循环

好的,我自己修复了。

我刚刚做了这个:

private void Form1_MouseDown(object sender, MouseEventArgs e)
{
    mouseDown = true;
}
private void Form1_MouseUp(object sender, MouseEventArgs e)
{
    mouseDown = false;
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
    if (mouseDown)
    {
        mouseX = MousePosition.X - 20;
        mouseY = MousePosition.Y - 40;
        this.SetDesktopLocation(mouseX, mouseY);
    }
}

通过在on mouse up事件中使用循环,您锁定了线程。您可以使用带有公共变量的MouseMove事件来检查鼠标是否按下。