Pessoal, nos últimos dias 29, 30 e 01, ministrei um Hands-On Lab de Silverlight para os empresários do programa Microsoft SOL.
Nesse treinamento, surgiu uma dúvida que fiquei de divulgar posteriormente, que era “Mudar o foco dos controles (Tab) pela tecla Enter“, mas por sorte nem precisei desenvolver
. O Ederson Santos – um dos participantes do treinamento – teve o trabalho de pesquisar e me enviar uma solução por e-mail. Valeu pelo apoio Ederson!
Segue a solução:
#region Event Handlers
private void LayoutRoot_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
TextBox atual = FocusManager.GetFocusedElement() as TextBox;
if (atual != null)
{
int index = atual.TabIndex++;
TextBox proximo = proximoFoco(index);
if (proximo != null)
proximo.Focus();
}
}
}
#endregion
#region Private Methods
///
/// Retorna o TextBox que recebe o focus
///
private TextBox proximoFoco(int index)
{
TextBox textbox = null;
foreach (var item in LayoutRoot.Children)
{
if (item is TextBox)
{
textbox = item as TextBox;
if (textbox != null)
{
if (textbox.TabIndex == index)
break;
}
}
}
return textbox;
}
#endregion
Espero que tenha sido útil.
Um forte abraço.
Fabriccio.





