WPF 鼠标事件

这篇博客介绍了WPF中与鼠标相关的属性和事件,包括SystemInformation类提供的鼠标信息,如MousePresent和MouseButtons等。此外,还详细讨论了鼠标滚轮的存在与功能。文章强调了鼠标事件的接收条件,如控件必须启用且可见,并列举了MouseDown、MouseUp、MouseMove和MouseWheel等基本鼠标事件及其对应的处理方法。对于WPF中控件内部已处理的事件,文章提出了使用Preview事件和AddHandler方法来实现自定义处理的解决方案。

 鼠标的信息由SystemInformation类提供。SystemInformation类的静态属性(节选)

关于鼠标信息

类型            属性                             访问方式                      说明

bool         MousePresent                 读取                  表示是否安装了鼠标

int            MouseButtons                 读取                  表示鼠标键的个数

bool         MouseButtonsSwapped  读取                  表示是否交换了键(方便左撇子用户的设置)

关于鼠标滚轮

类型            属性                                       访问方式                      说明

bool         MouseWheelPresent                    读取                  如果存在滚轮则返回true

int            MouseWheelScrollLines               读取                  每旋转一周所滚动的行数

bool         NativeMouseWheelSupport         读取                   对应用程序不很重要

 鼠标事件

任何特定的鼠标事件都只由一个控件接收,只有在该控件的Enable和Visible属性,均设置为true时,控件才能接收鼠标事件。鼠标事件只由直接位于鼠标光标下的控件接收。

 四种基本的鼠标事件

Control 的事件(节选)

事件                           方法                        委托                                    参数

MouseDown         OnMouseDown          MouseEventHandler          MouseEventArgs

MouseUp             OnMouseUp               MouseEventHandler           MouseEventArgs

MouseMove         OnMouseMove           MouseEventHandler           MouseEventArgs

MouseWheel        OnMousewheel         MouseEvetntHandler           MouseEventArgs

 MouseEventArgs 类的5个只读属性

类型属性访问方式说明
intX读取鼠标的水平位置
intY读取鼠标的垂直位置
MouseButtonsButton读取鼠标的一个或多个键
intClicks读取对于双击返回2
intDelta读取鼠标滑轮的运动

X 和Y 是整数,以相对于客户区左上角爱哦的像素数来表示鼠标光标热点的位置,该属性对鼠标的4个事件均有效。

Button属性表示在事件中设计的键,这个属性对MouseWheel事件是无效的。Button属性是一个MouseButtons枚举值(None、Left、Right、Middle等)。

 

按照WPF的帮助说明,某些控件的路由事件被内部处理了,已经被标记为Handled,自行定义的事件处理代码便不再起作用了,有时候会很郁闷!

      不过WPF提供了必要的方法。

      1)使用相应的Preview事件。须注意隧道类型的事件是从根元素开始执行的。

      2)使用AddHandler添加自定义的路由事件。

MouseDown事件的说明

AddHandler方法的说明

遗憾的是,似乎并没有明确说明哪些控件有这样的处理。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值