Windows Form 中的滑鼠事件

更新:2007 年 11 月

在處理滑鼠輸入時,通常會想要知道滑鼠指標位置和滑鼠按鈕狀態。這個主題提供關於如何從滑鼠事件取得此項資訊的詳細內容,同時還說明滑鼠 Click 事件在 Windows Form 控制項中的引發順序。如需所有滑鼠事件的清單和描述,請參閱滑鼠輸入在 Windows Form 中的運作方式

滑鼠資訊

MouseEventArgs 會傳送至與按一下滑鼠按鈕和追蹤滑鼠移動相關的滑鼠事件處理常式。MouseEventArgs 提供有關滑鼠目前狀態的資訊,其中包括工作區座標 (Client Coordinate) 中的滑鼠指標位置、按下哪個滑鼠按鈕以及滑鼠滾輪是否已捲動等資訊。例如單純通知滑鼠何時進入或離開控制項界限等數種滑鼠事件會將 EventArgs 傳送至事件處理常式,但不帶任何詳細資訊。

如果想知道滑鼠按鈕的目前狀態或滑鼠指標位置,但要避免處理滑鼠事件,則您也可以使用 Control 事件的 MouseButtonsMousePosition 屬性。MouseButtons 會傳回關於目前按下的滑鼠按鈕是哪個的資訊。MousePosition 則傳回滑鼠指標的螢幕座標 (Screen Coordinate),它即等同於 Position 所傳回的值。

在螢幕座標和工作區座標之間轉換

由於有些滑鼠位置資訊是工作區座標格式而另一些則是螢幕座標格式,您可能需要將某個點轉換成另一種座標系統。您可以藉由 Control 類別上可供使用的 PointToClientPointToScreen 方法,便能輕鬆執行這項工作。

標準 Click 事件行為

如果想要以正確順序處理滑鼠 Click 事件,您需要知道 Click 事件在 Windows Form 控制項中的引發順序。所有的 Windows Form 控制項在按下和釋放滑鼠按鈕時,除了以下個別控制項提及的順序之外,都是以相同的順序引發 Click 事件 (不論是哪一個滑鼠按鈕)。下表顯示的是按一下單一滑鼠按鈕時所引發的事件順序:

  1. MouseDown 事件。

  2. Click 事件。

  3. MouseClick 事件。

  4. MouseUp 事件。

以下是按兩下滑鼠按鈕時所引發的事件順序:

  1. MouseDown 事件。

  2. Click 事件。

  3. MouseClick 事件。

  4. MouseUp 事件。

  5. MouseDown 事件。

  6. DoubleClick 事件。(這可能會依據特定控制項的 StandardDoubleClick 樣式位元 (Style Bit) 是否設為 true 而有所不同。如需如何設定 ControlStyles 位元的詳細資訊,請參閱 SetStyle 方法)。

  7. MouseDoubleClick 事件。

  8. MouseUp 事件。

如需示範滑鼠 Click 事件順序的程式碼範例,請參閱 HOW TO:處理 Windows Form 控制項中的使用者輸入事件

個別控制項

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

切換控制項的繪製行為

當切換控制項 (例如衍生自 ButtonBase 類別的控制項) 發生滑鼠 Click 事件時,會產生下列特殊的繪製行為:

  1. 使用者按滑鼠按鈕。

  2. 控制項在按下的狀態中進行繪製。

  3. 便會引發 MouseDown 事件。

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

  5. 控制項在上升的狀態中進行繪製。

  6. 便會引發 Click 事件。

  7. 便會引發 MouseClick 事件。

  8. 便會引發 MouseUp 事件。

    注意事項:

    如果使用者在滑鼠按下時將指標移出切換控制項 (例如在按下 Button 控制項時移開滑鼠),切換控制項將以上升狀態繪製並且僅發生 MouseUp 事件。在這種情況下,並不會發生 ClickMouseClick 事件。

請參閱

其他資源

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