WPF鼠標事件簡介

 

主要有以下幾種事件: 主要事件 子事件 觸發條件 MouseHover 鼠標懸停在控件發生 MouseLeave 鼠標離開控件時發生 EventHandler MouseEnter 鼠標進入控件時發生 EventHandler MouseMove 鼠標移動過程中重複發生 MouseEventHandler MouseDown 鼠標鍵按下時發生 MouseEventHandler MouseLeftButtonDown 鼠標左鍵按下時發生 Mou

 

 主要有以下幾種事件:

主要事件 子事件 觸發條件  
MouseHover   鼠標懸停在控件發生  
MouseLeave   鼠標離開控件時發生 EventHandler
MouseEnter   鼠標進入控件時發生 EventHandler
MouseMove   鼠標移動過程中重複發生 MouseEventHandler
MouseDown   鼠標鍵按下時發生 MouseEventHandler
MouseLeftButtonDown 鼠標左鍵按下時發生  
MouseRightButtonDown 鼠標右鍵按下時發生  
MouseUp   鼠標鍵鬆開時發生 MouseEventHandler
MouseLeftButtonUp 鼠標左鍵鬆開時發生  
MouseRightButtonUp 鼠標右鍵鬆開時發生  
MouseWheel   鼠標滾輪滾動時發生 MouseEventHandler

另外還有Preview+事件 如: PreviewMouseMove 等等事件, 先於正常的鼠標事件發生。

  發生順序:

  鼠標事件按以下順序發生:

  MouseEnter

  MouseMove

  MouseHover / MouseDown / MouseWheel

  MouseUp

  MouseLeave

  與組件的綁定

  組件名稱.事件名稱+=new System.EventHandler(事件名稱);

  OR 組件名稱.事件名稱+=new System.MouseEventHandler(事件名稱);

  鼠標事件使用條件

  某些控件的功能增強: TreeView裏面元素的拖動

  或者自定義控件的許多功能: flash的時間軸

  控件內拖動功能舉例:

  l 獲得MouseDown時position。

  l 在 MouseMove中檢查鼠標左鍵按下情況 和 鼠標移動情況。

  l 把移動的舉例和系統提供的SystemParameters.MinimumHorizontalDragDistance比較

  如:

  Math.Abs(now.X-start.X)>SystemParameters.MinimumHorizontalDragDistance

  l 在MouseUp中根據左鍵的釋放情況,判斷釋放拖動完成,然後做相應處理。

  特殊問題解決

  我們在編寫程序代碼過程中可能遇到某些鼠標事件完全不被觸發的情況,如果你的MouseDown不觸發,那麼你可以試試PreviewMouseDown事件,其他事件類似,具體什麼原因,我也不清楚,感覺MouseDown 與 PreviewMouseDown是兩套獨立的事件鏈,互相不影響。

  MouseMove的觸發不是按固定位移量觸發的,(例如:鼠標滑動選擇元件,若鼠標移動太快,某些被劃過的元件就不被選擇了),所以某些情況下在MouseMove裏處理 不太可靠。

 

學習記錄:這個比較明確,留下來當字典查。

 

  本文來自chenxin的博客,原文地址:http://blog.chukong-inc.com/index.php/2012/05/18/wpf%E9%BC%A0%E6%A0%87%E4%BA%8B%E4%BB%B6%E7%AE%80%E4%BB%8B/

 

發佈了25 篇原創文章 · 獲贊 6 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章