2016-01-19 14 views

risposta

7

È possibile utilizzare FocusManager per spostare il focus di programmazione.

Utilizzare l'evento KeyDown del contenitore TextBox, ad esempio uno StackPanel, per ascoltare l'evento della tastiera. Quindi, il codice dovrebbe funzionare come questo senso

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

Per maggiori dettagli sui FocusManager, vedere a https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.input.focusmanager.trymovefocus

Per maggiori dettagli su KeyDown, vedere a https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.uielement.keydown

+0

L'unica cosa che ancora preoccupa me è, perché lo assegni allo StackPanel invece della casella di testo: '' –

+0

Quindi c'è solo il pulsante di invio e nessun pulsante done/next? – testing

0

avete qualcosa di simile yourTextBoxName.Focus() ..? utilizzare anche il KeyDownEvent per il New Password testo e controllare il seguente

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