C# 如何在没有计时器的情况下不断检查?
我需要能够检查鼠标是否在表单上的某个区域内。我希望能够做到这一点,而不使用计时器,虽然。我该怎么做呢C# 如何在没有计时器的情况下不断检查?,c#,user-interface,mouseevent,C#,User Interface,Mouseevent,我需要能够检查鼠标是否在表单上的某个区域内。我希望能够做到这一点,而不使用计时器,虽然。我该怎么做呢 我正在使用C#btw.您是否尝试将处理程序附加到事件,并检查每个移动?您是否尝试将处理程序附加到事件,并检查每个移动?如果该区域是一个屏幕控件,您可以使用MouseEnter,MouseLeave,MouseHover和MouseMove事件。如果该区域是一个屏幕控件,您可以使用MouseEnter、MouseLeave、MouseHover和MouseMove事件。您需要在该区域定义事件 同时
我正在使用C#btw.您是否尝试将处理程序附加到事件,并检查每个移动?您是否尝试将处理程序附加到事件,并检查每个移动?如果该区域是一个屏幕控件,您可以使用
MouseEnter
,MouseLeave
,MouseHover
和MouseMove
事件。如果该区域是一个屏幕控件,您可以使用MouseEnter
、MouseLeave
、MouseHover
和MouseMove
事件。您需要在该区域定义事件
同时使用OnMouseEnter
和OnMouseLeave
确定鼠标是否在该区域
onmouseinter
直到OnMouseLeave
表示鼠标仍在该区域。您需要定义该区域上的事件
同时使用OnMouseEnter
和OnMouseLeave
确定鼠标是否在该区域
onmouseinter
直到OnMouseLeave
表示鼠标仍在该区域。我认为其他人建议的鼠标事件是最好的解决方案,但作为计时器的另一种替代方法,您可以编写一个小函数来检查鼠标,然后在主窗口调度程序上使用“应用程序空闲”继续调用它优先事项这将持续运行您的检查,而不会冻结UI。
同样,我认为,挂接mousemove事件仍然是一个更干净的解决方案。我认为其他人建议的鼠标事件是最好的解决方案,但作为计时器的另一种替代方案,您可以编写一个小函数来检查鼠标,然后继续在主窗口调度程序上以“应用程序空闲”优先级调用它。这将持续运行您的检查,而不会冻结UI。
再次,钩住MuSeMeFor事件仍然是一个更干净的解决方案,IMO. < P>如果MyEMOFE事件频繁触发挂钩,或者如果您希望避免在每个窗体上挂起该事件,请考虑挂起事件。
每次应用程序即将空闲时,都会触发此事件-所有挂起的消息(包括重新绘制)都已处理,无需执行任何操作。在大多数WiFrm应用程序中,这种情况每秒发生几次,提供了一种“即时处理”的好方法。 < P>如果MSOMeFoE事件频繁触发挂钩,或者如果您希望避免在每个窗体上挂起该事件,请考虑挂起事件。
每次应用程序即将空闲时,都会触发此事件-所有挂起的消息(包括重新绘制)都已处理,无需执行任何操作。在大多数WinForms应用程序中,这种情况每秒发生几次,提供了一种“即时”处理的好方法。您应该侦听鼠标事件,并在每次鼠标移动时进行验证。您可能需要解释为什么不想使用计时器。我认为计时器在这种情况下是完美的。你应该听鼠标事件,并在每次鼠标移动时进行验证。你可能想解释为什么不想使用计时器。我认为计时器在这种情况下是完美的。因此,如果我试图用“rect”来检查鼠标是否位于矩形内,我会使用类似于:if(rect.Contains(MouseEnter)),因此如果我试图用“rect”来检查鼠标是否位于矩形内,我会使用类似于:if(rect.Contains(MouseEnter))