Job is Tech

エンジニア・デザイナー向けの、お役立ちWEBマガジン

【C#-UWP】Enter入力時に指定したコントロールにフォーカスを変更

概要

 

テキスト入力時にEnterで指定したフォームに移動する方法の紹介です。

名前空間:Windows.System

クラス名:VirtualKey

 

テキストコントロールのイベント

 
KeyUp:キーボードから指が離れたタイミングで実行

private void textBox_KeyUp(object sender, KeyRoutedEventArgs e)
{
   // Enterなどの判定はここに記述していきます。
}

KeyUpイベントを複数のコントロールに指定する場合

// 直接コントロールに指定してイベント設定することも可能
textBox.KeyUp += TextBox_KeyUp;

 

キー判定の手法

 

入力されたキーはKeyUpの引数[e]から取得が可能
キーボード情報はVirtuaKeyを使って比較ができます。
【Enter判定のサンプル】

if (e.Key == Windows.System.VirtualKey.Enter)
{
    // Enterの時の処理
}

 

フォーカスの移動

 

Focus():コントロールのフォーカス状態を設定

// フォーカスが設定されていない状態
textBox.Focus(FocusState.Unfocused);
// フォーカスがポインタ操作によって設定されている状態
textBox.Focus(FocusState.Pointer);

 

【サンプル】

Enter押下時にテキストボックスが入れ替わるサンプル

    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();
        }

 

        private void textBox_KeyUp(object sender, KeyRoutedEventArgs e)
        {
        
            if (e.Key == Windows.System.VirtualKey.)
            {
               
                System.Diagnostics.Debug.WriteLine("OK");
                switch (((TextBox)sender).Name)
                {
                    case "textBox":
                        textBox_Copy.Focus(FocusState.Pointer);
                        System.Diagnostics.Debug.WriteLine("textBoxでEnterが押下されました。");
                        break;
                    case "textBox_Copy":
                        textBox.Focus(FocusState.Pointer);
                        System.Diagnostics.Debug.WriteLine("textBox_CopyでEnterが押下されました。");
                        break;
                }

            }
        }

    }

 

 

サンプル:https://github.com/efmisaki/uwp-chageEnter

記事作成:jobis運営製作 未沙貴