滑鼠事件
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
開發工具與關鍵技術:Visual Studio 2015
作者:朱海恩
撰寫時間:2019年7月19日
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
滑鼠主要幾種事件:
MouseHover:滑鼠懸停在控件時發生
MouseLeave:滑鼠離開控件時發生
MouseEnter:滑鼠進入控件時發生
MouseMove:滑鼠移動過程中重複發生
MouseDown:滑鼠鍵按下時發生
- MouseLeftButtonDown:滑鼠左鍵按下時發生
- MouseRightButtonDown:滑鼠右鍵按下時發生
MouseUp:滑鼠鍵松開時發生
- MouseLeftButtonUp:滑鼠左鍵松開時發生
- MouseRightButtonUp:滑鼠右鍵松開時發生
MouseWheel:滑鼠滾輪滾動時發生
想用這些事件時,到屬性中找到對應的屬性,然後在輕按兩下文本框即可用
另外還有Preview+事件,如:PreviewMouseMove等等事件,先于正常的滑鼠事件發生。
滑鼠事件的發生順序:
(1)MouseEnter
(2)MouseMove
(3)MouseHover/MouseDown/MouseWheel
(4)MouseUp
(5)MouseLeave
滑鼠與元件的綁定:
元件名稱.事件名稱+=new System.EventHandler(事件名稱);
OR元件名稱.事件名稱+=new System.MouseEventHandler(事件名稱);
滑鼠事件使用條件:
某些控件的功能增強:TreeView裡面元素的拖動
或者自定義控件的許多功能:flash的時間軸
事件内拖動功能舉例:
(1)獲得MouseDown時position
(2)在 MouseMove中檢查滑鼠左鍵按下情況 和 滑鼠移動情況
如果你的MouseDown不觸發,那麼你可以試試PreviewMouseDown事件。
MouseMove的觸發不是按固定位移量觸發的,(例如:滑鼠滑動選擇元件,若滑鼠移動太快,某些被劃過的元件就不被選擇了),是以某些情況下在MouseMove 裡處理不太可靠。
當滑鼠穿過一個Element時,mousemove會發生很多次,但是mouseenter和mouseleave隻會發生一次,分别在滑鼠進入element區域以及離開element區域是發生。
當處理MouseMove ,MouseEnter,Mouseleave事件時我們還可以擷取正在按下的滑鼠按鍵式哪一個:Leftbutton,middlebutton,RightButton,以及兩個擴充按鍵XButton1和XButton2。(這五個都是MouseEventargs的屬性),他們的值是MouseButtonState枚舉的一個,隻有兩種狀态,Pressed和Released。