使用滑鼠事件 (Windows Forms .NET)

大部分的 Windows Forms 程式會藉由處理滑鼠事件來處理滑鼠輸入。 本文提供滑鼠事件的概觀,包括何時使用每個事件以及針對每個事件提供的資料的詳細資料。 如需一般事件的詳細資訊,請參閱 事件概觀(Windows Forms .NET)。

重要

.NET 7 和 .NET 6 的桌面指南檔正在建置中。

滑鼠事件

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

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

滑鼠資訊

MouseEventArgs 會傳送至有關點按滑鼠按鈕和追蹤滑鼠移動之滑鼠事件的處理常式。 MouseEventArgs 提供滑鼠目前狀態的相關資訊,包括滑鼠指標在用戶端座標中的位置、按了哪個滑鼠按鈕,以及是否已捲動滑鼠滾輪。 數個滑鼠事件,例如滑鼠指標已進入或離開控制項界限時所引發的事件,會將 傳送 EventArgs 至事件處理常式,而沒有進一步的資訊。

如果您想要知道滑鼠按鈕的目前狀態或滑鼠指標的位置,而且您想要避免處理滑鼠事件,您也可以使用 Control 類別的 MouseButtonsMousePosition 屬性。 MouseButtons 會傳回目前按下哪些滑鼠按鈕的相關資訊。 MousePosition 會傳回滑鼠指標的螢幕座標,等於 Position 所傳回的值。

在螢幕與用戶端座標之間轉換

因為有些滑鼠位置資訊是在用戶端座標中,而有些是在螢幕座標中,所以您可能需要將某個點從一個座標系統轉換到另一個座標系統。 使用 Control 類別中所提供的 PointToClientPointToScreen 方法,可讓您輕鬆執行此作業。

標準 Click 事件行為

如果您想要以適當順序來處理滑鼠點按事件,您需要知道在 Windows Form 控制項中引發點按事件的順序。 當按下並放開任何支援的滑鼠按鍵時,所有 Windows Forms 控制項都會以相同的順序引發 Click 事件,但個別控制項的下列清單所指出的情況除外。 以下是針對按一下滑鼠按鈕時,所引發的事件順序:

  1. MouseDown 事件。
  2. Click 事件。
  3. MouseClick 事件。
  4. MouseUp 事件。

以下是針對按兩下滑鼠按鍵按一下所引發的事件順序:

  1. MouseDown 事件。

  2. Click 事件。

  3. MouseClick 事件。

  4. MouseUp 事件。

  5. MouseDown 事件。

  6. DoubleClick 事件。

    視有問題的控制項是否將 StandardDoubleClick 樣式位設定為 true 而定,這可能會有所不同。 如需如何設定 ControlStyles 位的詳細資訊,請參閱 SetStyle 方法。

  7. MouseDoubleClick 事件。

  8. MouseUp 事件。

個別控制項

下列控制項不符合標準滑鼠按一下事件行為:

切換控制項的小畫家行為

切換控制項 (例如衍生自 ButtonBase 類別的控制項) 與滑鼠點按事件搭配組合,具有下列特殊繪圖行為:

  1. 使用者按下滑鼠按鈕。

  2. 控制項會以所按下的狀態繪製。

  3. 便會引發 MouseDown 事件。

  4. 使用者放開滑鼠按鈕。

  5. 控制項會以所引發的狀態繪製。

  6. 便會引發 Click 事件。

  7. 便會引發 MouseClick 事件。

  8. 便會引發 MouseUp 事件。

    注意

    如果使用者在按下滑鼠按鈕的同時,將指標移出切換控制項 (例如在按下滑鼠按鈕的同時,將滑鼠從 Button 控制項移開),切換控制項將會以所引發的狀態繪製,而且只會發生 MouseUp 事件。 在此情況下,不會發生 ClickMouseClick 事件。

另請參閱