使用滑鼠的概觀 (Windows Forms .NET)
接收和處理滑鼠輸入是每個 Windows 應用程式的重要部分。 您可以處理滑鼠事件以在應用程式中執行動作,或使用滑鼠位置資訊來執行點擊測試或其他動作。 此外,您也可以變更應用程式控制項處理滑鼠輸入的方式。 本文詳細說明這些滑鼠事件,以及如何取得和變更滑鼠的系統設定。
重要
.NET 7 和 .NET 6 的桌面指南檔正在建置中。
在 Windows Forms 中,使用者輸入會以 Windows 訊息 的形式 傳送至應用程式。 一系列的可覆寫方法會在應用程式、表單和控制層級處理這些訊息。 當這些方法接收滑鼠訊息時,它們會引發可處理以取得滑鼠輸入相關資訊的事件。 在許多情況下,Windows Forms 應用程式只要處理這些事件即可處理所有使用者輸入。 在其他情況下,應用程式可能會覆寫處理訊息以攔截特定訊息的方法之一,再由應用程式、表單或控制項接收。
滑鼠事件
所有 Windows Forms 控制項都會繼承一組與滑鼠和鍵盤輸入相關的事件。 例如,控制項可以處理 MouseClick 事件,以判斷按一下滑鼠的位置。 如需滑鼠事件的詳細資訊,請參閱 使用滑鼠事件 。
滑鼠位置和點擊測試
當使用者移動滑鼠時,作業系統會移動滑鼠指標。 滑鼠指標包含稱為作用點的單一圖元,作業系統會追蹤並辨識為指標的位置。 當使用者移動滑鼠或按下滑鼠按鍵時, Control 包含 HotSpot 的 會引發適當的滑鼠事件。
您可以在處理滑鼠事件時,或使用 類別的 Cursor 屬性,取得目前滑鼠位置 Location 與 的 屬性 MouseEventArgs 。 Position 接著,您可以使用滑鼠位置資訊來執行點擊測試,然後根據滑鼠的位置執行動作。 點擊測試功能內建于 Windows Forms 中的數個控制項,例如 ListView 、 TreeViewMonthCalendar 和 DataGridView 控制項。
例如,搭配適當的滑鼠事件使用時, MouseHover 點擊測試對於判斷應用程式何時應該執行特定動作非常有用。
變更滑鼠輸入設定
您可以藉由衍生自 控制項並使用 和 SetStyle 方法,來偵測和 GetStyle 變更控制項處理滑鼠輸入的方式。 SetStyle方法會採用值的位元組合 ControlStyles ,以判斷控制項是否會有標準點選、按兩下行為,或控制項是否會處理自己的滑鼠處理。 此外,類別 SystemInformation 也包含描述滑鼠功能的屬性,並指定滑鼠如何與作業系統互動。 下表摘要說明這些屬性。
屬性 | 說明 |
---|---|
DoubleClickSize | 取得使用者必須按一下兩次,才能讓作業系統考慮按兩下兩次的區域維度,以圖元為單位。 |
DoubleClickTime | 取得可在第一次按一下之間經過的毫秒數上限,以及滑鼠動作要視為按兩下的第二次按一下。 |
MouseButtons | 取得滑鼠上的按鈕數目。 |
MouseButtonsSwapped | 取得值,指出是否已調換滑鼠左右按鈕的功能。 |
MouseHoverSize | 取得矩型的維度 (以像素為單位),滑鼠指標必須在此範圍內停留一段滑鼠暫留時間,才能產生滑鼠暫留訊息。 |
MouseHoverTime | 取得時間 (以毫秒為單位),滑鼠指標在該段時間內必須停留在停留矩形內,才能產生滑鼠停留訊息。 |
MousePresent | 取得值,指出是否安裝滑鼠。 |
MouseSpeed | 取得值,指出目前的滑鼠速度,從 1 到 20。 |
MouseWheelPresent | 取得值,指出是否已安裝具有滑鼠滾輪的滑鼠。 |
MouseWheelScrollDelta | 取得單一滑鼠滾輪旋轉增量的差異值量。 |
MouseWheelScrollLines | 取得轉動滑鼠滾輪時要捲動的行數。 |
處理使用者輸入訊息的方法
表單和控制項可以存取 IMessageFilter 介面和一組可覆寫的方法,以處理訊息佇列中不同點的 Windows 訊息。 這些方法都有參數 Message ,其會封裝 Windows 訊息的低階詳細資料。 您可以實作或覆寫這些方法來檢查訊息,然後取用訊息,或將它傳遞給訊息佇列中的下一個取用者。 下表顯示處理 Windows Forms 中所有 Windows 訊息的方法。
方法 | 注意 |
---|---|
PreFilterMessage | 這個方法會攔截應用層級的已排入佇列(也稱為已張貼)Windows 訊息。 |
PreProcessMessage | 此方法會在處理表單和控制項層級之前攔截 Windows 訊息。 |
WndProc | 此方法會處理表單和控制項層級的 Windows 訊息。 |
DefWndProc | 這個方法會在表單和控制層級執行 Windows 訊息的預設處理。 這會提供視窗的最低功能。 |
OnNotifyMessage | 此方法會在處理訊息之後攔截表單和控制項層級的訊息。 EnableNotifyMessage必須設定樣式位,才能呼叫這個方法。 |
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應