WPF鼠标事件

主要有以下几种事件:
主要事件子事件触发条件 
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里处理 不太可靠。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值