2014-06-30 3 views
0

Я пытаюсь создать свою форму, которая не имеет границы, перемещается, удерживая левую кнопку мыши и выходя из цикла while, при отпускании мыши. Но код, который у меня есть сейчас, не выходит из цикла при выпуске.Выход из цикла mouseDown event

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; 
    } 
+0

Возможного дубликат, проверьте http://stackoverflow.com/questions/7712309/c-sharp-loop-while-mousedown-button-pressed –

+0

Функции MouseEventArgs параметр е не изменяет значения во время выполнения – supertopi

+0

Я не фанат добавления мышечных слушателей через C#. Обычно я пытаюсь отделить много FrontEnd от C# – Fallenreaper

ответ

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

Используя петлю в левой кнопки мыши случае вы блокировки нить. Вы можете использовать событие MouseMove с общедоступной переменной, чтобы проверить, не указана ли мышь.

Смежные вопросы