É muito comum no desenvolvimento de aplicações além da tecla Tab, definir o Enter para pular entre os controles do formulário, principalmente sistemas migrados do DOS em que o pessoal tinha esse costume de utilizar o Enter.
Com um projeto WPF criado, coloque 4 TextBox no formulário.
Feito isso, vá até o evento PreviewKeyDown do mesmo. O código para fazer o Enter pular de controle está abaixo.
private void Window_PreviewKeyDown(object sender, KeyEventArgs e){ var elemento = e.OriginalSource as UIElement; if (elemento == null) return; if(e.Key == Key.Enter) elemento.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));}
O código é simples, primeiro criamos uma variável a partir do e.OriginalSource que é o controle que estamos, e será a partir dele que vamos mudar o foco. Depois só temos uma verificação que se elemento for nulo retorna e não faz mais nada;
O if é simples, verifico se a tecla pressionada foi o Enter, e ai chamamos o método MoveFocus() que move o foco de um controle para outro, esse método recebe uma nova instância da classe TraversalRequest que representa uma requisição para mover o foco para outro controle.
No construtor da TraversalRequest passamos o enum FocusNavigationDirection que contém as opções abaixo:
- Next
- Previous
- First
- Last
- Left
- Right
- Up
- Down
Cada uma das opções move o foco de acordo com o TabOrder do formulário ou pela posição dos controles.
Com esse enum fica fácil criarmos mais opções para o usuário, por exemplo se o usuário clicar a seta para cima mudamos o foco para o controle acima, o código ficaria assim.
private void Window_PreviewKeyDown(object sender, KeyEventArgs e){ var elemento = e.OriginalSource as UIElement; if (elemento == null) return; if(e.Key == Key.Enter) elemento.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next)); if (e.Key == Key.Up) elemento.MoveFocus(new TraversalRequest(FocusNavigationDirection.Up));}
Fica aqui a dica principalmente para quem está migrando de WindowsForms para WPF, e vai ver que alguns (muitos) detalhes funcionarão de forma diferente.
Abraços.




