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

接收及處理滑鼠輸入是每個 Windows 應用程式的重要部分。 處理滑鼠事件可讓您在應用程式中執行某個動作;或者您可使用滑鼠位置資訊來執行點擊測試 (Hit Testing) 或其他動作。 此外,您還可以變更應用程式中控制項對滑鼠輸入的處理方式。 這個主題將詳細描述這些滑鼠事件以及如何取得和變更滑鼠的系統設定。 如需滑鼠事件所提供的資料以及滑鼠 Click 事件的引發順序等相關詳細資訊,請參閱 Windows Form 中的滑鼠事件

滑鼠位置和點擊測試

使用者移動滑鼠時,作業系統會隨之移動滑鼠指標。 滑鼠指標包含稱之為作用點 (Hot Spot) 的單一像素,它是作業系統所追蹤的點且將其識別為指標位置。 當使用者移動滑鼠或按下滑鼠按鍵時,包含 HotSpotControl 會引發適當的滑鼠事件。 處理滑鼠事件或使用 Cursor 類別的 Position 屬性時,您可利用 MouseEventArgsLocation 屬性來取得目前的滑鼠位置。 接著您可使用滑鼠位置資訊來執行點擊測試,然後再依據滑鼠的位置執行某項動作。 點擊測試功能已內建在 Windows Form 中的數種控制項,例如 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 類型的引數。 您可以使用 MouseEventArgsDelta 屬性來判斷滑鼠所捲動的距離。

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

您可以從控制項進行衍生然後使用 GetStyleSetStyle 方法,來偵測該控制項處理滑鼠輸入的方式。 SetStyle 方法採用 ControlStyles 值的位元組合,來判斷控制項將有標準按一下或按兩下行為,或是控制項將進行它自己的滑鼠處理。 此外,SystemInformation 類別包括描述滑鼠功能的屬性以及指定滑鼠與作業系統之互動方式的屬性。 下表摘要說明了這些屬性:

屬性

說明

DoubleClickSize

取得區域的維度 (以像素為單位),在此範圍內使用者必須按兩次,作業系統才會將這兩次的按一下動作視為按兩下。

DoubleClickTime

取得毫秒數,這是第一次按一下和第二次按一下的最大時間間隔,作業系統在此期間內會將滑鼠動作視為按兩下動作。

MouseButtons

取得滑鼠上的按鈕數目。

MouseButtonsSwapped

取得值,指出是否已調換滑鼠左右按鈕的功能。

MouseHoverSize

取得矩型的維度 (以像素為單位),滑鼠指標必須在此範圍內停留一段滑鼠暫留時間,才能產生滑鼠暫留訊息。

MouseHoverTime

取得時間 (以毫秒為單位),這是滑鼠指標為了產生滑鼠暫留訊息而必須停留在暫留矩形內的時間。

MousePresent

取得值,指出是否已安裝滑鼠。

MouseSpeed

取得值,指出目前的滑鼠速度,範圍可以從 1 到 20。

MouseWheelPresent

取得值,指出是否已安裝具有滑鼠滾輪的滑鼠。

MouseWheelScrollDelta

取得滑鼠滾輪單次轉動的遞增差異值總數。

MouseWheelScrollLines

取得轉動滑鼠滾輪時要捲動的行數。

請參閱

概念

Windows Form 中的滑鼠捕捉

Windows Form 中的滑鼠指標

其他資源

Windows Form 應用程式中的滑鼠輸入