您的位置:首页 > 其它

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

2011-04-19 15:43 369 查看
本篇继续带来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页面:




.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

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

 private void Rectangle_TestCK_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)


[code] {


System.Diagnostics.Debug.WriteLine("MouseLeft Click Counter:"+e.ClickCount.ToString());


if (e.ClickCount == 1)//Single Click


this.Counter_TB.Text = "Left Mouse Click Counter:" + e.ClickCount.ToString();


else if (e.ClickCount == 2)//Double Click


this.Counter_TB.Text = "Left Mouse Double Click:" + e.ClickCount.ToString();


else //More Click


this.Counter_TB.Text = "Left Mouse Click Counter:" + e.ClickCount.ToString();     


}

[/code]

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

把鼠标点击的结果输出的OutPut窗口 并在页面显示鼠标点击次数 运行效果:



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



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

Double and Even Triple Click SouceCode DownLoad:/Files/chenkai/FuturesDoubleEvenClick_Demo.rar
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: