如何在没有计时器的情况下继续检查?

时间:2011-08-08 19:51:12

标签: c# user-interface mouseevent

我需要能够连续检查鼠标是否在表单上的某个区域内。不过我希望能够在不使用计时器的情况下完成此操作。我该怎么做呢?

我正在使用C#btw。

5 个答案:

答案 0 :(得分:6)

您是否尝试将处理程序附加到MouseMove事件,并检查每个动作?

答案 1 :(得分:3)

如果该区域是屏幕控制,您可以使用MouseEnterMouseLeaveMouseHoverMouseMove个事件。

答案 2 :(得分:1)

我认为其他人建议的鼠标事件是最好的解决方案,但作为计时器的另一种替代方法,您可以编写一个小函数来检查鼠标,然后在主窗口调度程序上以“应用程序空闲”优先级继续调用它。这将持续运行您的检查而不冻结UI。 再次,挂钩到mousemove事件仍然是一个更清洁的解决方案,IMO。

答案 3 :(得分:1)

如果过于频繁地挂钩MouseMove事件 - 或者如果您想避免在每个表单上挂钩该事件,请考虑挂钩Application.Idle事件。

每次应用程序即将空闲时,此事件都会触发 - 所有待处理的消息(包括重新绘制)都已处理完毕,没有什么可做的。在大多数WinForms应用程序中,这种情况每秒发生几次,提供了一种“及时”处理的好方法。

答案 4 :(得分:0)

您需要在该区域定义事件。

同时使用OnMouseEnterOnMouseLeave来判断鼠标是否在此区域内!

OnMouseEnter直到OnMouseLeave表示鼠标仍在该区域内。