TextBoxでCtrl+Enter

TextBoxでCntrl+Enterを押したときに何か処理をしたい。
【参考】キーボード操作への反応(テキスト入力とコントロール)

// using
using Windows.System;// VirtualKey
using Windows.UI.Xaml.Input;// KeyRoutedEventArgs
 
// コード
bool isCtrlKeyPressed = false;
 
private void textBox_KeyUp(object sender, KeyRoutedEventArgs e)
{
  switch (e.Key)
  {
    case VirtualKey.Control:
      isCtrlKeyPressed = false;
      break;
    case VirtualKey.Enter:
      if (isCtrlKeyPressed)
      {
        // Ctrl+Enterが押されたときの処理
      }
      break;
  }
}
 
private void textBox_KeyDown(object sender, KeyRoutedEventArgs e)
{
  switch (e.Key)
  {
    case VirtualKey.Control:
      isCtrlKeyPressed = true;
      break;
  }
}

Enterを押したときに改行が入ってしまうので、必要あればTextBoxのIsReadOnlyプロパティとか使って適当に。
IsReadOnlyプロパティだとCtrl+X,Ctrl+Vも効かなくなってしまうのでAcceptsReturnプロパティで。
参考サイトではKeyDownで処理するように書かれていますがタイミングとしてはKeyUpの方が自然でしょう。
また、Enterの場合AcceptsReturnがTrueになっているとKeyDownでは動きません


カテゴリー: C#, Windows ストア アプリ タグ: , , , , パーマリンク