Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在没有计时器的情况下不断检查?_C#_User Interface_Mouseevent - Fatal编程技术网

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))