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運行效果以下所示:

          
    
    
     好了,今天的內容就到這裏了。   
    
     ×××,請 點擊這裏:)
相關文章
相關標籤/搜索