用戶移動(dòng)鼠標(biāo)時(shí) MouseMove 事件發(fā)生。
Private Sub object_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Object 窗體、窗體節(jié)或窗體上控件的名稱。
Button 按下 (MouseDown) 或釋放 (MouseUp) 以觸發(fā)事件的按鈕。如果需要測試 Button 參數(shù),則可以使用以下固有常量之一作為位掩碼:
常量說明
acLeftButton 鼠標(biāo)左鍵的位掩碼。
acRightButton 鼠標(biāo)右鍵的位掩碼。
acMiddleButton 鼠標(biāo)中間鍵的位掩碼。
Shift 在按下或釋放 Button 參數(shù)所指定的按鈕時(shí) SHIFT、CTRL 和 ALT 鍵的狀態(tài)。如果需要測試 Shift 參數(shù),則可以使用以下固有常量之一作為位掩碼:
常量說明
acShiftMask SHIFT 鍵的位掩碼。
acCtrlMask CTRL 鍵的位掩碼。
acAltMask ALT 鍵的位掩碼。
X, Y 鼠標(biāo)指針當(dāng)前位置的 x 和 y 座標(biāo)。X 和 Y 參數(shù)始終以緹為單位表示。
MouseMove 事件僅適用于窗體、窗體的節(jié)和窗體上的控件,不適用于報(bào)表上的控件。
該事件不適用于附到其他控件上的標(biāo)簽,例如文本框的標(biāo)簽。它只適用于“獨(dú)立”的標(biāo)簽。在附屬標(biāo)簽中移動(dòng)鼠標(biāo)與在標(biāo)簽所附屬的控件中移動(dòng)鼠標(biāo)有相同的效果。這種情況下,將只發(fā)生控件的正常事件,而不會(huì)發(fā)生附屬標(biāo)簽的獨(dú)立事件。
若要在該事件發(fā)生時(shí)執(zhí)行宏或事件過程,請(qǐng)將 OnMouseMove 屬性設(shè)置為宏的名稱或 [事件過程]。
當(dāng)鼠標(biāo)指針在對(duì)象上移動(dòng)時(shí),將連續(xù)地產(chǎn)生 MouseMove 事件,除非另有對(duì)象也產(chǎn)生了鼠標(biāo)事件,否則只要指針位于對(duì)象的邊框內(nèi),對(duì)象就能識(shí)別 MouseMove 事件。
若要使窗體的 MouseMove 事件發(fā)生,請(qǐng)?jiān)诖绑w空白區(qū)域、記錄選定器或滾動(dòng)條上移動(dòng)鼠標(biāo)指針。要使窗體節(jié)的 MouseMove 事件發(fā)生,請(qǐng)?jiān)诖绑w節(jié)的空白區(qū)域上移動(dòng)鼠標(biāo)指針。
注釋
? | 即使鼠標(biāo)不動(dòng),移動(dòng)窗體也會(huì)觸發(fā) MouseMove 事件。當(dāng)窗體在指針下面移動(dòng)時(shí),也將產(chǎn)生 MouseMove 事件。如果宏或事件過程為響應(yīng) MouseMove 事件而移動(dòng)窗體,事件將級(jí)聯(lián)發(fā)生(即連續(xù)地產(chǎn)生 MouseMove 事件)。 |
? | 如果兩個(gè)控件非常接近,當(dāng)在其間隙中快速移動(dòng)指針時(shí),可能不會(huì)針對(duì)該間隙發(fā)生 MouseMove 事件(例如,這可能是窗體節(jié)的 MouseMove 事件)。在這種情況下,可能需要對(duì)相鄰控件中以及窗體節(jié)中的 MouseMove 事件作出響應(yīng)。 |
若要運(yùn)行宏或事件過程以響應(yīng)鼠標(biāo)鍵的按下和釋放事件,請(qǐng)使用 MouseDown 和 MouseUp 事件。
可以使用 MouseMove 宏在一旦用戶將鼠標(biāo)移過窗體或控件上時(shí)進(jìn)行響應(yīng)。但是,當(dāng)移動(dòng)發(fā)生時(shí),宏無法返回按鈕代碼和確定鼠標(biāo)按鈕的狀態(tài)或鼠標(biāo)指針的坐標(biāo),因此通常要用事件過程處理這些事件。
不能在 MouseMove 宏中使用 CancelEvent 操作。
下面的示例確定鼠標(biāo)的位置以及是否按鼠標(biāo)左鍵和/或 SHIFT 鍵。移動(dòng)鼠標(biāo)時(shí),鼠標(biāo)指針位置的 x 和 y 坐標(biāo)會(huì)顯示在標(biāo)簽控件中。
若要試用該示例,請(qǐng)將下面的事件過程添加到包含名為“Coordinates”標(biāo)簽的窗體中:
Private Sub Detail_MouseMove(Button As Integer, _
Shift As Integer, X As Single, Y As Single)
Dim intShiftDown As Integer, intLeftButton As Integer
Me!Coordinates.Caption = X & ", " & Y
' Use bit masks to determine state of
' SHIFT key and left button.
intShiftDown = Shift And acShiftMask
intLeftButton = Button And acLeftButton
' Check that SHIFT key and left button
' are both pressed.
If intShiftDown And intLeftButton > 0 Then
MsgBox "Shift key and left mouse button were pressed."
End If