天天看點

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開發

     好了,今天的内容就到這裡了。   

     源碼下載下傳,請點選這裡:)

繼續閱讀