ProcessCmdKey - Alterando o foco de acordo com a tecla
Bom dia,
Tenho um formulário de pesquisa de itens formado basicamente por um textbox e um datagridview.
Gostaria que quando o usuário apertasse a tecla UP ou DOWN navegasse no datagridview e quando digitasse qualquer outra coisa, fosse para o Textbox.
Para isso sobrescrevi o ProcessCmdKey, mas não funciona bem. Pois quando o usuário aperta UP or DOWN ele SÓ TROCA O FOCO, não executa a ação UP/DOWN no grid. (Tenho a impressão que ele manda o comando UP/DOWN no textbox e só depois troca o foco para o grid).
A mesma coisa acontece com as outras teclas quando o foco está no grid.
Se aperto a tecla "A" e o foco está no Grid, apenas o foco é alterado para o textbox, porém não aparece o texto "A" , somente na proxima vez que eu apertar é que o texto vai para o textbox (pois o foco já está nele).
Alguém já fez algo parecido? Sabe como solucionar??
Desde já obrigado.
Segue meu código
Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean
If keyData = Keys.Enter AndAlso Not IsNothing(grid.CurrentRow) Then
cancelado = False
keyData = Nothing
retorna(grid.CurrentRow.Index)
Return True
ElseIf keyData = Keys.Down Or keyData = Keys.Up Then
grid.Focus()
Return MyBase.ProcessCmdKey(msg, keyData)
Else
If Not txtFiltro.Focused Then
txtFiltro.Focus()
Return True
End If
End If
Return MyBase.ProcessCmdKey(msg, keyData)
End Funcion
Discussão (0)
Carregando comentários...