2016-01-19 13 views
6

私は簡単なフォームを持っています。ユーザが電話キーボードでenterを押すとカーソルが次のテキストボックスに移動します。 ユニバーサルWindowsアプリケーションでこれを行うことはできますか? アンドロイドでは、キーボードに[次へ]/[完了]キーが表示され、フォーム要素をナビゲートします。submit(Windows Phone)の代わりに 'Enter'キーを押したときに次のテキストボックスに移動

enter image description here

答えて

7

をご確認ください。

キーボードイベントを再生するために、TextBoxコンテナのKeyDownイベントを使用します(例:StackPanel)。だからあなたのコードがするFocusManagerの詳細については

private void stackPanel_KeyDown(object sender, KeyRoutedEventArgs e) 
    { 
     if (e.Key == Windows.System.VirtualKey.Enter) 
     { 
      if (FocusManager.GetFocusedElement() == inputTextBox) // Change the inputTextBox to your TextBox name 
      { 
       FocusManager.TryMoveFocus(FocusNavigationDirection.Next); 
       FocusManager.TryMoveFocus(FocusNavigationDirection.Next); 
      } 
      else 
      { 
       FocusManager.TryMoveFocus(FocusNavigationDirection.Next); 
      } 

      // Make sure to set the Handled to true, otherwise the RoutedEvent might fire twice 
      e.Handled = true; 
     } 
    } 

この方法のように動作します、https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.uielement.keydown

+0

にまだ私をされて悩まれている唯一のものを参照してください、KeyDownイベントの詳細についてはhttps://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.input.focusmanager.trymovefocus

に見ます、なぜそれをStackPanelの代わりにTextBoxの代わりに割り当てるのですか?

+0

Enterボタンと完了/次ボタンだけがありますか? – testing

0

あなたがyourTextBoxName.Focus()のようなものを持っていますか..?またNew PasswordテキストボックスのためKeyDownEventを使用して、あなたがプログラムでフォーカスを移動するFocusManagerを使用することができ、次の

if (e.Key == Key.Enter || e.PlatformKeyCode == 0x0A) 
{ 
    confirmPassword.Focus();//change confirmPassword to your controls actual name  
} 
関連する問題