2016-01-19 10 views

Antwort

7

Sie verwenden können Focusmanager den Fokus programmatisch zu bewegen.

Verwenden Sie das KeyDown-Ereignis des TextBox-Containers, sagen wir, ein StackPanel, um Ihr Tastaturereignis zu hören. So Ihr Code würde wie auf diese Weise arbeiten

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; 
     } 
    } 

Weitere Details zu Focusmanager finden Sie auf https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.input.focusmanager.trymovefocus

Weitere Einzelheiten zu KeyDown- finden zu https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.uielement.keydown

+0

Das einzige, was noch plagt mich ist, Warum weisen Sie es dem StackPanel statt der Textbox zu: '' –

+0

Es gibt also nur die Enter-Taste und keine Done/Next-Tasten? – testing

0

tun Sie so etwas wie yourTextBoxName.Focus() haben ..? verwenden auch die KeyDownEvent für die New Password Textbox und überprüfen Sie die folgenden

if (e.Key == Key.Enter || e.PlatformKeyCode == 0x0A) 
{ 
    confirmPassword.Focus();//change confirmPassword to your controls actual name  
} 
Verwandte Themen