Silverlight2.0でManaged JScriptでのキーイベントについて

今回はManaged JScriptでのキーイベントについてです。
何のキーが押下されたのかの判定がちょっとややこしいです。

基本的なキーを判別するのであれば
イベントオブジェクトのeventArgs.Keyと
キー配列の一覧をもつKeyクラスで用が立つのですが
Keyクラスでは足りないこともよくあります。
やっぱりそこはキーコードを見て判断するしかないようです。

また、シフトが押下されているかの判断は
KeyboardクラスとModifierKeysクラスを使って判断します。
何故かイベントオブジェクトからでは判断できません。
紛らわしいです。

下記のように記述します。
fooのbarオブジェクトに対してキーが押下されたら
doKeyDownメソッドを呼び出しています。
 Import(“System.Windows.Input.Key”)
 Import(“System.Windows.Input.Keyboard”)
 Import(“System.Windows.Input.ModifierKeys”)

 foo.bar.KeyDown += doKeyDown;

 function doKeyDown(sender, eventArgs){
  // Altが押されている
  if((Keyboard.Modifiers & ModifierKeys.Alt) == ModifierKeys.Alt){
   return;
  }

  // コントロールが押されている
  if((Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control){
   return;
  }

  // シフトが押されている
  if((Keyboard.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift){
   return;
  }

  if(eventArgs.Key == Key.Enter){
   // エンターが押下
   
  } else {
   // キーコードで判断
   switch(eventArgs.PlatformKeyCode){
    case 191:
     // “/”が押下
     break;

    default:
     break;
   }

  } // if(eventArgs.Key == Key.Enter)
 }

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください