滑鼠輸入在 Windows Form 中的運作方式

接收和處理滑鼠輸入是每個 Windows 應用程式的重要部分。 您可以處理滑鼠事件以在應用程式中執行動作,或使用滑鼠位置資訊來執行點擊測試或其他動作。 此外,您可以變更應用程式中控制項處理滑鼠輸入的方式。 本主題詳細說明這些滑鼠事件,以及如何取得和變更滑鼠的系統設定。 如需滑鼠事件所提供的資料以及引發滑鼠點擊事件順序的詳細資訊,請參閱 Windows Forms 中的滑鼠事件。

滑鼠位置和點擊測試

當使用者移動滑鼠時,作業系統會移動滑鼠指標。 滑鼠指標包含稱為作用點的單一圖元,作業系統會追蹤並辨識為指標的位置。 當使用者移動滑鼠或按下滑鼠按鍵時, Control 包含 HotSpot 的 會引發適當的滑鼠事件。 您可以在處理滑鼠事件時,或使用 類別的 Cursor 屬性,取得目前滑鼠位置 Location 與 的 屬性 MouseEventArgsPosition 您接著可以使用滑鼠位置資訊來執行點擊測試,然後根據滑鼠的位置執行動作。 點擊測試功能內建于 Windows Forms 中的數個控制項,例如 ListViewTreeViewMonthCalendarDataGridView 控制項。 例如, MouseHover 搭配適當的滑鼠事件使用,點擊測試對於判斷應用程式何時應該執行特定動作非常有用。

滑鼠事件

回應滑鼠輸入的主要方法是處理滑鼠事件。 下表顯示滑鼠事件,並描述它們何時引發。

滑鼠事件 描述
Click 當放開滑鼠按鍵時,通常會在事件之前 MouseUp 發生此事件。 這個事件的處理常式會接收 EventArgs 類型的引數。 當您只需要判斷按一下何時發生時,請處理此事件。
MouseClick 當使用者按一下具有滑鼠的控制項時,就會發生這個事件。 這個事件的處理常式會接收 MouseEventArgs 類型的引數。 當您需要取得按一下時滑鼠的相關資訊時,請處理此事件。
DoubleClick 按兩下控制項時,就會發生這個事件。 這個事件的處理常式會接收 EventArgs 類型的引數。 當您只需要判斷何時發生按兩下時,請處理此事件。
MouseDoubleClick 當使用者按兩下滑鼠控制項時,就會發生這個事件。 這個事件的處理常式會接收 MouseEventArgs 類型的引數。 當您需要取得按兩下時滑鼠的相關資訊時,請處理此事件。
MouseDown 當滑鼠指標位於控制項上方,且使用者按下滑鼠按鍵時,就會發生這個事件。 這個事件的處理常式會接收 MouseEventArgs 類型的引數。
MouseEnter 根據控制項的類型,滑鼠指標進入控制項的框線或工作區時,就會發生這個事件。 這個事件的處理常式會接收 EventArgs 類型的引數。
MouseHover 當滑鼠指標停止並停留在 控制項上時,就會發生這個事件。 這個事件的處理常式會接收 EventArgs 類型的引數。
MouseLeave 當滑鼠指標離開控制項的框線或工作區時,就會發生這個事件,視控制項的類型而定。 這個事件的處理常式會接收 EventArgs 類型的引數。
MouseMove 當滑鼠指標在控制項上方移動時,就會發生這個事件。 這個事件的處理常式會接收 MouseEventArgs 類型的引數。
MouseUp 當滑鼠指標位於控制項上方,且使用者放開滑鼠按鍵時,就會發生這個事件。 這個事件的處理常式會接收 MouseEventArgs 類型的引數。
MouseWheel 當使用者在控制項有焦點時旋轉滑鼠滾輪時,就會發生這個事件。 這個事件的處理常式會接收 MouseEventArgs 類型的引數。 您可以使用 DeltaMouseEventArgs 屬性來判斷滑鼠捲動的距離。

變更滑鼠輸入和偵測系統設定

您可以藉由衍生自 控制項並使用 和 SetStyle 方法,來偵測和 GetStyle 變更控制項處理滑鼠輸入的方式。 SetStyle方法會採用值的位元組合 ControlStyles ,以判斷控制項是否會有標準的按一下或按兩下行為,或控制項是否會處理自己的滑鼠處理。 此外,類別 SystemInformation 也包含描述滑鼠功能的屬性,並指定滑鼠與作業系統的互動方式。 下表摘要說明這些屬性。

屬性 說明
DoubleClickSize 取得使用者必須按一下兩次,才能讓作業系統考慮按兩下兩次的區域維度,以圖元為單位。
DoubleClickTime 取得在第一次按一下和作業系統第二次按一下之間可以經過的毫秒數上限,以將滑鼠動作視為按兩下。
MouseButtons 取得滑鼠上的按鈕數目。
MouseButtonsSwapped 取得值,指出是否已調換滑鼠左右按鈕的功能。
MouseHoverSize 取得矩型的維度 (以像素為單位),滑鼠指標必須在此範圍內停留一段滑鼠暫留時間,才能產生滑鼠暫留訊息。
MouseHoverTime 取得時間 (以毫秒為單位),滑鼠指標在該段時間內必須停留在停留矩形內,才能產生滑鼠停留訊息。
MousePresent 取得值,指出是否安裝滑鼠。
MouseSpeed 取得值,指出目前的滑鼠速度,從 1 到 20。
MouseWheelPresent 取得值,指出是否已安裝具有滑鼠滾輪的滑鼠。
MouseWheelScrollDelta 取得單一滑鼠滾輪旋轉增量的差異值量。
MouseWheelScrollLines 取得轉動滑鼠滾輪時要捲動的行數。

另請參閱