天天看点

Silverlight中键盘事件的js开发

     在之前的一篇文章中,介绍了Silverlight中鼠标事件的js应用,因为这篇文章内容摘选自SDK,所

以就先暂放在新手区,算是给自己做了个备注吧:)

    下面是相应的xaml代码(KeyDown.xaml):   

< Canvas  xmlns ="http://schemas.microsoft.com/client/2007"  

        xmlns:x ="http://schemas.microsoft.com/winfx/2006/xaml"

        x:Name ="myTextCanvas" >

   < TextBox  Canvas.Left ="30"  Canvas.Top ="30"  Width ="200"  

   x:Name ="myTextBox"  Text =""   />

   < TextBox  Canvas.Left ="30"  Canvas.Top ="80"  Width ="200"  

  x:Name ="myTextBox2"  Text =""   />

   < TextBlock  Canvas.Left ="30"  Canvas.Top ="130"

    x:Name ="myTextBlock"  Text ="显示 KeyDown 事件参数"   />

</ Canvas >

    相应的js代码, 内容详见注释(KeyDown.js):   

Silverlight_JsWeb.KeyDown  =   function () 

{

}

Silverlight_JsWeb.KeyDown.prototype  =

{

 handleLoad:  function (plugIn, userContext, sender) 

 {

   this .plugIn  =  plugIn;

   //  按钮事件挂钩示例: 查找按钮,然后附加事件处理程序

  sender.findName( " myTextBox " ).addEventListener( " KeyDown " , Silverlight.createDelegate( this ,  this .handleKeyDown));

  sender.findName( " myTextBox " ).addEventListener( " GotFocus " , Silverlight.createDelegate( this ,  this .handleGotFocus));

  sender.findName( " myTextBox " ).addEventListener( " LostFocus " , Silverlight.createDelegate( this ,  this .handleLostFocus));

  sender.findName( " myTextBox " ).addEventListener( " KeyUp " , Silverlight.createDelegate( this ,  this .handleKeyUp));

 },

  //  键按下的事件处理方法.

    handleKeyDown:  function (sender, keyEventArgs) 

    {        

         var  textBlock  =  sender.findName( " myTextBlock " );

         var  msg   =   " key:  "   +  keyEventArgs.key  +   " /r/n " ;

            msg  +=   " platformKeycode:  "   +  keyEventArgs.platformKeyCode +   " /r/n " ;

            msg  +=   " shift:  "   +  keyEventArgs.shift +   " /r/n " ;

            msg  +=   " ctrl:  "   +  keyEventArgs.ctrl +   " /r/n " ;

        textBlock.Text  =  msg;

    },

     // 得到输入焦点的处理方法

    handleGotFocus:  function (sender, keyEventArgs)

    {

        sender.findName( " myTextBlock " ).Text  =   " 得到焦点 " ;

    },

     // 失去输入焦点的处理方法

    handleLostFocus:  function (sender, keyEventArgs)

    {

        sender.findName( " myTextBlock " ).Text  =   " 失去焦点 " ;

    },

     //  键弹起的事件处理方法

    handleKeyUp:  function (sender, keyEventArgs)

    {

         //  判断是否按下 CTRL+V 组合键.

         if  ((keyEventArgs.key  ==   51 )  &&  (keyEventArgs.ctrl  ==   true ))

        {

             //  返回插件引用.

             var  plugin  =  sender.getHost();

             //  检测是否是sivlerlight 2.0版.

            sender.findName( " myTextBlock " ).Text  =   " Silverlight 2.0:  "   +  plugin.isVersionSupported( " 2.0 " );

        }

    }

}

    其Demo运行效果如下所示:

Silverlight中键盘事件的js开发

     好了,今天的内容就到这里了。   

     源码下载,请点击这里:)

继续阅读