События перемещения форм в Windows Forms - PullRequest
0 голосов
/ 16 июля 2010

Моя проблема заключается в следующем: у меня есть конечный автомат внутри приложения, и мне нужно иметь возможность приостанавливать функцию ProcessInput текущих состояний, пока пользователь перемещает форму вдоль экрана.

У меня есть свойство «Paused» в состоянии, которое делает это, и я перезаписываю событие OnMove формы, так что свойство устанавливается в значение true, когда событие инициируется.

Как возобновить функцию ProcessInput для состояния, когда пользователь больше не перемещает форму? (Чтобы быть более точным, я ищу событие, чтобы поместить в него «state.Paused = false»)

Заранее спасибо за помощь!

Ответы [ 2 ]

1 голос
/ 16 июля 2010

Вам нужно WM_MOVE сообщение, оно отправляется после завершения перемещения. Я не помню, есть ли в WinForms обработчик (событие) для него, но в худшем случае вы можете переопределить WndProc окна и обработать сообщение вручную - в стиле "старой школы" на языке C.

1 голос
/ 16 июля 2010

Не уверен, есть ли какое-то конкретное событие, которое вы можете прослушивать, но как насчет использования какого-то обходного метода на основе таймера?

Создайте таймер, сбрасывайте и включайте таймер каждый раз, когда происходит событие перемещения.Как только таймер действительно сработает (не будет сброшен в течение установленного времени), тогда установите state.Paused = false.

Может быть немного рудиментрием, но он должен работать ...

...