Ho un modulo semplice e vorrei che quando l'utente preme Invio nella sua tastiera del telefono il cursore si sposterà alla successiva casella di testo. Può essere fatto in App per Windows universale? In Android la tastiera mostra un tasto Successivo/Fine per navigare negli elementi del modulo.Passa alla casella di testo successiva quando viene premuto il tasto "Invio" invece di inviare (Windows Phone)
6
A
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
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
}
L'unica cosa che ancora preoccupa me è, perché lo assegni allo StackPanel invece della casella di testo: '' –
Quindi c'è solo il pulsante di invio e nessun pulsante done/next? – testing