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));
 },
/*  
keyEventArgs 参数说明:
    Key: 键值,整型类型。 
    PlatformKeyCode: 键盘按下的键值,整型类型。This value is the non-portable key code, which is operating system-specific.
    Shift: 是否按下了 SHIFT 键,Boolean类型.
    Ctrl: 是否按下了 Ctrl 键,Boolean类型.
*/

 
//  键按下的事件处理方法.
    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运行效果以下所示:

          
    
    
     好了,今天的内容就到这里了。   
    
     ×××,请 点击这里:)