Uma pergunta muito comum que vejo por aí é como trocar o Enter pelo Tab. Normalmente, deve-se manipular o evento de tecla pressionada, verificar se é um Enter e mudar o foco para o elemento seguinte na lista de tabulação. Em WPF, podemos criar um manipulador para o evento PreviewKeyDown da janela (no WPF, os eventos são propagados por toda a árvore de elementos, assim, os eventos de tecla obrigatoriamente passam pela janela, independente de onde tenham sido gerados), como o seguinte:
private void Window_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Return)
{
FocusNavigationDirection focusDirection = FocusNavigationDirection.Next;
TraversalRequest request = new TraversalRequest(focusDirection);
UIElement elementWithFocus = Keyboard.FocusedElement as UIElement;
if (elementWithFocus != null)
elementWithFocus.MoveFocus(request);
e.Handled = true;
}
}
Bruno,
Tenho como definir essa operação para todos os Texbox da minha aplicação???
Grato,
Diego
Não vejo por que não. Esta operação funciona em toda a janela. Se você quer pular os elementos que não sejam TextBoxes, pode colocar algo assim:
while (elementWithFocus != null && elementWithFocus != TextBox)
elementWithFocus.MoveFocus(request);
e.Handled = true;
Eu queria deixar como padrão para todas as telas, sem ter que usar o PreviewKeyDown em cada uma, existe um jeito de fazer isso???
grato,
Eu faria uma classe onde colocaria o código e derivaria as janelas onde quero este código desta nova janela.
Outra maneira seria criar um UserControl sem nada onde você coloca este código e coloca seu UserControl na janela e o conteúdo dentro dela