我的问题如下:我在应用程序中有一个状态机,只要用户沿着屏幕移动表单,我就需要能够暂停当前状态的 ProcessInput 功能。
我在执行此操作的状态上有一个名为“Paused”的属性,并且我覆盖了表单的 OnMove 事件,以便在事件触发时将该属性设置为 true。
当用户不再移动表单时,如何恢复状态的 ProcessInput 功能?(更具体地说,我正在寻找一个将“state.Paused = false”放入其中的事件)
提前感谢您的帮助!
我的问题如下:我在应用程序中有一个状态机,只要用户沿着屏幕移动表单,我就需要能够暂停当前状态的 ProcessInput 功能。
我在执行此操作的状态上有一个名为“Paused”的属性,并且我覆盖了表单的 OnMove 事件,以便在事件触发时将该属性设置为 true。
当用户不再移动表单时,如何恢复状态的 ProcessInput 功能?(更具体地说,我正在寻找一个将“state.Paused = false”放入其中的事件)
提前感谢您的帮助!
您需要WM_MOVE消息,它在移动完成时发送。我不记得在 WinForms 中是否有一个处理程序(一个事件),但在最坏的情况下,您可以覆盖窗口的 WndProc 并手动处理消息 - 采用“老派”C风格。
不确定是否有可以监听的特定事件,但是使用某种基于计时器的解决方法怎么样?
创建一个计时器,每次发生移动事件时重置并启用计时器。一旦计时器实际触发(在设置的持续时间内没有被重置),然后设置 state.Paused = false。
可能有点初级,但它应该工作......