代码改变世界

Silverlight 5 Beta新特性[2] 鼠标多重点击实现

2011-04-19 15:43  chenkai  阅读(2528)  评论(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页面:

2011-04-19_152643

 

 

 

 

 

当鼠标快速在单位时间内做了多次点击时把点击次数显示页面上 后台控制:

   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窗口 并在页面显示鼠标点击次数  运行效果:

2011-04-19_153353

 

 

 

 

 

 

 

单位实现时间多次点击 效果:

2011-04-19_153628

 

 

 

 

 

 

 

可见如上Silverlight 5 Beta以在MouseButtonEventArgs类添加一个ClickCount属性的代价来解决了鼠标多重点击问题出现.还是显得很实用.如上就是关于Silverlight 5 Beta中鼠标多次点击实现.如有疑问请在留言中提出.提供源码下载如下:

Double and Even Triple Click SouceCode DownLoad:/Files/chenkai/FuturesDoubleEvenClick_Demo.rar

无觅相关文章插件,快速提升流量