Создание непрерывного действия во время события мыши Windows Form - PullRequest
0 голосов
/ 16 июля 2009

Когда я помещаю кнопку в форму в C #, Visual Studio 2005, и у меня возникает действие, инициируемое событием кнопки, например MouseHover или MouseDown, событие вызывает один вызов функции, которая определяет действие, несмотря на факт, что я могу продолжать зависать или удерживать левую кнопку. В этом случае я пытаюсь переместить графический объект, поворачивая или переводя его. Я не хочу продолжать щелкать мышью, чтобы вызвать повторный вызов функции преобразования, просто удерживайте мышь в нажатом положении или удерживайте кнопку нажатой. Что поддерживает действие, пока я не прекращаю свое собственное действие?

Ответы [ 3 ]

0 голосов
/ 16 июля 2009

В вашем случае вам нужно использовать комбинацию событий MouseDown, MouseMove и MouseUp.

Вот небольшой упрощенный пример для запуска:

private void OnMouseDown(object sender, EventArgs e)
{
   //hit test to check if the mouse pointer is on a graphical object
   _myHitObject = the_selected_object
}

private void OnMouseMove(object sender, EventArgs e)
{
   if(_myHitObject != null)
       //do your action relative to the mouse movements.
}

private void OnMouseUp(object sender, EventArgs e)
{
    _myHitObject = null;
}
0 голосов
/ 16 июля 2009

Решение состоит в том, чтобы использовать DoEvents (), который позволяет отметить событие MouseLeave и изменить переменную класса «more»:

private void MouseEnter_ZoomIn (отправитель объекта, EventArgs e)

{

 more = true;

 while (more == true)

 {
    c1Chart3D1.ChartArea.View.ViewportScale *= ZoomMultiple;
    Application.DoEvents();

 }

} // MOUSEENTER_ZOOMIN ()

// -------------------------------------

private void MouseLeave_Stop (отправитель объекта, EventArgs e)

{

 more = false;

}

0 голосов
/ 16 июля 2009

Установите флаг на MouseEnter и продолжайте выполнять действие, пока флаг остается истинным. Установите флажок в false на MouseLeave.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...