Silverlight 5 Beta新特性[2] 鼠标多重点击实现
2011-04-19 15:43 chenkai 阅读(2535) 评论(7) 编辑 收藏 举报本篇继续带来Silverlight 5 Beta版本中新特性.提到鼠标点击实现.印象最深的是在Silverlight 3版本中实现右键点击菜单.但当时在Silverlight 3中对鼠标右键点击事件没有提供支持.在SilverlightL 3版本里通过JavaScriptBridge实现,后来在Silverlight 4版本添加入两个右键点击事件MouseRightButtonDown/MouseRightButtonUp和一个滚轮事件MouseWheel加以支持.MenuItem右键菜单实现代价大大降低. 同样Silverlight 5 Beta版本中对鼠标的多重点击做了进一步加强.
在官方团队Blog看到关于添加鼠标多重点击一段Comment[翻译后]:
对于许多人来说,特别是老人,在同一个地点点击两次之间无需移动鼠标其实是相当具有挑战性.然而双击[三击,甚至多重点击在一些专门的3D和音乐节目应用中也是一个有必要加强的功能.
而Silverlight 5解决这个问题在点击事件引入一个ClickCount点击次数属性. 而不是针对双击/三击/多种点击单独建立对应Event事件来进行处理.而是通过MouseButtonEventArgs类的ClickCount属性简单直观获得鼠标左键或右键点击的次数. 而这个点击次数ClickCount是在系统设置鼠标双击速度触发事件单位时间内点击动作的计数.
对于Silverlight 5实现多重点击的计数.这个实现过程我们常常要考虑点击动作时序问题.确保一个单位时间内两次单击不会被一次双击所取代.而ClickCount点击次数则完全解决这个问题.
如下在Silverlight 5 Beta中实现鼠标多重点击 .首先定义View页面:
当鼠标快速在单位时间内做了多次点击时把点击次数显示页面上 后台控制:
1: private void Rectangle_TestCK_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
2: {
3: System.Diagnostics.Debug.WriteLine("MouseLeft Click Counter:"+e.ClickCount.ToString());
4: if (e.ClickCount == 1)//Single Click
5: this.Counter_TB.Text = "Left Mouse Click Counter:" + e.ClickCount.ToString();
6: else if (e.ClickCount == 2)//Double Click
7: this.Counter_TB.Text = "Left Mouse Double Click:" + e.ClickCount.ToString();
8: else //More Click
9: this.Counter_TB.Text = "Left Mouse Click Counter:" + e.ClickCount.ToString();
10: }
把鼠标点击的结果输出的OutPut窗口 并在页面显示鼠标点击次数 运行效果:
单位实现时间多次点击 效果:
可见如上Silverlight 5 Beta以在MouseButtonEventArgs类添加一个ClickCount属性的代价来解决了鼠标多重点击问题出现.还是显得很实用.如上就是关于Silverlight 5 Beta中鼠标多次点击实现.如有疑问请在留言中提出.提供源码下载如下:
Double and Even Triple Click SouceCode DownLoad:/Files/chenkai/FuturesDoubleEvenClick_Demo.rar