滑鼠輸入在 Windows Form 中的運作方式
接收和處理滑鼠輸入是每個 Windows 應用程式的重要部分。 您可以處理滑鼠事件以在應用程式中執行動作,或使用滑鼠位置資訊來執行點擊測試或其他動作。 此外,您還可以變更應用程式中的控制項處理滑鼠輸入的方式。 本主題會詳細說明這些滑鼠事件,以及要如何取得和變更滑鼠的系統設定。 如需滑鼠事件所提供之資料以及按一下滑鼠事件之引發順序的詳細資訊,請參閱 Windows Form 中的滑鼠事件。
滑鼠位置和點擊測試
當使用者移動滑鼠時,作業系統會移動滑鼠指標。 滑鼠指標包含稱為作用點的單一像素,作業系統會追蹤此作用點,並將其辨識為指標的位置。 當使用者移動滑鼠或按滑鼠按鍵時,包含 HotSpot (部分機器翻譯) 的 Control (部分機器翻譯) 便會引發適當的滑鼠事件。 您可以在處理滑鼠事件時,或透過使用 Cursor (英文) 類別的 Position (英文) 屬性,以 MouseEventArgs (部分機器翻譯) 的 Location (英文) 屬性取得目前的滑鼠位置。 隨後,您可以使用滑鼠位置資訊來執行點擊測試,然後根據滑鼠的位置執行動作。 點擊測試功能內建於 Windows Forms 中的數個控制項,例如 ListView (部分機器翻譯)、TreeView (部分機器翻譯)、MonthCalendar (部分機器翻譯) 和 DataGridView (部分機器翻譯) 控制項。 點擊測試與適當的滑鼠事件搭配使用時 (例如 MouseHover (部分機器翻譯)),對於判斷應用程式何時應該執行特定動作非常有用。
滑鼠事件
回應滑鼠輸入的主要方法是處理滑鼠事件。 下表顯示滑鼠事件,並描述其會於何時引發。
滑鼠事件 | 描述 |
---|---|
Click | 此事件發生於放開滑鼠按鍵時,通常會在 MouseUp (部分機器翻譯) 事件之前發生。 這個事件的處理常式會接收 EventArgs 類型的引數。 當您只需要判斷按一下何時發生時,請處理此事件。 |
MouseClick | 此事件發生於使用者用滑鼠按一下控制項時。 這個事件的處理常式會接收 MouseEventArgs 類型的引數。 當您需要取得發生按一下的情況下滑鼠的相關資訊時,請處理此事件。 |
DoubleClick | 此事件發生於按兩下控制項時。 這個事件的處理常式會接收 EventArgs 類型的引數。 當您只需要判斷按兩下何時發生時,請處理此事件。 |
MouseDoubleClick | 此事件發生於使用者用滑鼠按兩下控制項時。 這個事件的處理常式會接收 MouseEventArgs 類型的引數。 當您需要取得發生按兩下的情況下滑鼠的相關資訊時,請處理此事件。 |
MouseDown | 此事件發生於滑鼠指標位於控制項上,且使用者按滑鼠按鍵時。 這個事件的處理常式會接收 MouseEventArgs 類型的引數。 |
MouseEnter | 此事件發生於滑鼠指標進入控制項的框線或工作區時 (取決於控制項的類型)。 這個事件的處理常式會接收 EventArgs 類型的引數。 |
MouseHover | 此事件發生於滑鼠指標停下並留在控制項上時。 這個事件的處理常式會接收 EventArgs 類型的引數。 |
MouseLeave | 此事件發生於滑鼠指標離開控制項的框線或工作區時 (取決於控制項的類型)。 這個事件的處理常式會接收 EventArgs 類型的引數。 |
MouseMove | 此事件發生於滑鼠指標原本停留在控制項上並開始移動時。 這個事件的處理常式會接收 MouseEventArgs 類型的引數。 |
MouseUp | 此事件發生於滑鼠指標在控制項上,且使用者放開滑鼠按鍵時。 這個事件的處理常式會接收 MouseEventArgs 類型的引數。 |
MouseWheel | 此事件發生於使用者在焦點位於控制項的情況下旋轉滑鼠滾輪時。 這個事件的處理常式會接收 MouseEventArgs 類型的引數。 您可以使用 MouseEventArgs (部分機器翻譯) 的 Delta (部分機器翻譯) 屬性來判斷滑鼠捲動的距離。 |
變更滑鼠輸入和偵測系統設定
您可以藉由衍生自控制項並使用 GetStyle (英文) 和 SetStyle (部分機器翻譯) 方法,來偵測和變更控制項處理滑鼠輸入的方式。 SetStyle (部分機器翻譯) 方法會採用 ControlStyles (部分機器翻譯) 值的位元組合,來判斷控制項是否會有標準的按一下或按兩下行為,或者控制項是否會處理自己的滑鼠處理。 此外,SystemInformation (英文) 類別也包含會描述滑鼠功能並指定滑鼠如何與作業系統互動的屬性。 下表摘要說明這些屬性。
屬性 | 說明 |
---|---|
DoubleClickSize | 取得區域的大小 (以像素為單位),使用者在該區域中必須按兩次滑鼠,作業系統才會將這個按兩次滑鼠的動作視為按兩下。 |
DoubleClickTime | 取得要讓作業系統將滑鼠動作視為按兩下,第一次按滑鼠的動作和第二次按滑鼠的動作之間所允許的最大毫秒數。 |
MouseButtons | 取得滑鼠上的按鈕數目。 |
MouseButtonsSwapped | 取得值,指出是否已調換滑鼠左右按鈕的功能。 |
MouseHoverSize | 取得矩型的維度 (以像素為單位),滑鼠指標必須在此範圍內停留一段滑鼠暫留時間,才能產生滑鼠暫留訊息。 |
MouseHoverTime | 取得時間 (以毫秒為單位),滑鼠指標在該段時間內必須停留在停留矩形內,才能產生滑鼠停留訊息。 |
MousePresent | 取得指出是否已安裝滑鼠的值。 |
MouseSpeed | 取得指出目前滑鼠速度的值,從 1 到 20。 |
MouseWheelPresent | 取得值,指出是否已安裝具有滑鼠滾輪的滑鼠。 |
MouseWheelScrollDelta | 取得單一滑鼠滾輪旋轉增量的差異值數量。 |
MouseWheelScrollLines | 取得轉動滑鼠滾輪時要捲動的行數。 |