本文使用「署名 4.0 国际 (CC BY 4.0)」许可协议,欢迎转载、或重新修改使用,但需要注明来源。 [署名 4.0 国际 (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/deed.zh) 本文作者: 苏洋 创建时间: 2008年01月18日 统计字数: 468字 阅读时间: 1分钟阅读 本文链接: https://soulteary.com/2008/01/18/vb-if-mouse-leave-control.html ----- # VB检测鼠标离开控件 VB 提供了3种很棒的鼠标交互事件:MouseDown、MouseUp、MouseMove,但是唯独缺少一个MouseExit(鼠标移出)事件。然而这个缺少的事件却是我们的刚需。 为了解决问题,我们可以通过API来自己封装一个离开事件。 首先引入两个API声明: ```vb Private Declare Function SetCapture Lib "user32" (ByVal hWnd As Long) As Long Private Declare Function ReleaseCapture Lib "user32" () As Long ``` 然后,可以在控件(以 Picture1 为例)的 MouseMove 事件上加上以下代码: ```vb Dim MouseExit As Boolean MouseOver = (0 <= X) And (X <=Picture1.Width And (0 <=Y) And (Y <=Picture1.Height) If MouseExit Then SetCapture Picture1.hWnd Else ReleaseCapture End If ```