您的位置:首页 > 其它

WPF鼠标事件简介

2013-05-21 10:00 337 查看

主要有以下几种事件:

主要事件子事件触发条件
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里处理 不太可靠。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: