c# – 控件中的多个MouseHover事件

前端之家收集整理的这篇文章主要介绍了c# – 控件中的多个MouseHover事件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试在C#中实现自定义控件,我需要在鼠标悬停时获取事件.我知道有MouseHover事件,但它只触发一次.要让它再次触发,我需要使用控件的鼠标并再次输入.

有什么方法可以做到这一点吗?

解决方法

让我们将“停止移动”定义为“保持在n ms的x像素半径内”.

订阅MouseMove事件并使用计时器(设置为n ms)来设置超时.每次鼠标移动时,请检查公差.如果超出容差范围,请重置计时器并记录新的原点.

代码

  1. Point lastPoint;
  2. const float tolerance = 5.0;
  3.  
  4. //you might want to replace this with event subscribe/unsubscribe instead
  5. bool listening = false;
  6.  
  7. void OnMouSEOver()
  8. {
  9. lastpoint = Mouse.Location;
  10. timer.Start();
  11. listening = true; //listen to MouseMove events
  12. }
  13.  
  14. void OnMouseLeave()
  15. {
  16. timer.Stop();
  17. listening = false; //stop listening
  18. }
  19.  
  20. void OnMouseMove()
  21. {
  22. if(listening)
  23. {
  24. if(Math.abs(Mouse.Location - lastPoint) > tolerance)
  25. {
  26. //mouse moved beyond tolerance - reset timer
  27. timer.Reset();
  28. lastPoint = Mouse.Location;
  29. }
  30. }
  31. }
  32.  
  33. void timer_Tick(object sender,EventArgs e)
  34. {
  35. //mouse "stopped moving"
  36. }

猜你在找的C#相关文章