退出while mouseDown事件的循环

时间:2014-06-30 12:44:42

标签: c# while-loop mousedown

我正在尝试制作没有边框的Form,可以在释放鼠标按钮的同时按住鼠标左键并退出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;
    }

2 个答案:

答案 0 :(得分:3)

好的,我自己解决了。

我刚刚这样做了:

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);
    }
}

答案 1 :(得分:1)

通过在on mouse up事件中使用循环来锁定线程。您可以将MouseMove事件与公共变量一起使用来检查鼠标是否已关闭。