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(thisthis.handleKeyDown));
  sender.findName(
"myTextBox").addEventListener("GotFocus", Silverlight.createDelegate(thisthis.handleGotFocus));
  sender.findName(
"myTextBox").addEventListener("LostFocus", Silverlight.createDelegate(thisthis.handleLostFocus));
  sender.findName(
"myTextBox").addEventListener("KeyUp", Silverlight.createDelegate(thisthis.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运行效果如下所示:

          
    
    
     好了,今天的内容就到这里了。   
    
     源码下载,请点击这里:)

posted @ 2008-07-09 08:57  代震军  阅读(1281)  评论(0编辑  收藏  举报