2016-01-19 12 views

Odpowiedz

7

Można użyć FocusManager przenieść ostrość programowo.

Użyj zdarzenia KeyDown kontenera TextBox, powiedzmy, StackPanel, aby wysłuchać zdarzenia na klawiaturze. Więc twój kod będzie działać jak ten sposób

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

Więcej informacji na temat FocusManager, patrz na https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.input.focusmanager.trymovefocus

Więcej szczegółów na KeyDown, patrz na https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.uielement.keydown

+0

Jedyną rzeczą, która jest nadal niepokoi mnie to, dlaczego przypisujesz go do StackPanel zamiast pola tekstowego, jak: '' –

+0

Czy jest tylko przycisk Enter i brak przycisków do zrobienia/następnego? – testing

0

masz coś takiego yourTextBoxName.Focus() ..? również użyć KeyDownEvent dla New Password tekstowym i sprawdzić następujące

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