MouseMove – 什么是相反的事件?
Private Sub framePDF_MouseMove(ByVal... ) framePDF.BackColor = &H80000012&
所以,框架的颜色正在改变。
我找不到事件返回的颜色 – 当光标离开框架?
在vba和VB6中没有MouseLeave事件。
实现这一点的最好方法是在鼠标进入框架时启动计时器。
然后在计时器代码中检查鼠标指针是否仍然在框架的边界内。 如果不改变颜色,停止计时器
把这个代码放在一个模块中:
Public Declare Function GetCursorPos Lib "user32" (lpPoint As _ POINTAPI) As Long Public Type POINTAPI x As Long y As Long End Type
在窗体上创build一个计时器,设置interval =10
Enbaled = False
然后代码看起来像这样:
Private Sub frameTest_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single) frameTest.BackColor = vbRed tmrMouseLeave.Enabled = True End Sub Private Sub tmrMouseLeave_Timer() Dim pt As POINTAPI Call GetCursorPos(pt) Dim xValue As Long, yValue As Long xValue = pt.x * Screen.TwipsPerPixelX yValue = pt.y * Screen.TwipsPerPixelY If (xValue > (Me.Left + frameTest.Left)) And _ (xValue < (Me.Left + frameTest.Left + frameTest.width)) And _ (yValue > (Me.Top + frameTest.Top)) And _ (yValue < (Me.Top + frameTest.Top + frameTest.height)) Then 'we are still inside the frame Else 'mouse is outside the frame frameTest.BackColor = vbBlue tmrMouseLeave.Enabled = False End If End Sub
在用户窗体上? 用户窗体也有一个MouseMove事件,当您在框架中时不会触发。
Private Sub Frame1_MouseMove(ByVal ...) Me.Frame1.BackColor = vbRed End Sub Private Sub UserForm_MouseMove(ByVal ...) Me.Frame1.BackColor = vbWhite End Sub
当你结束时会把框架变成红色,而当你不在时则变成白色。 这些事件不断发生,所以明智地使用它们。