Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ZecaLoteiro

ProcessCmdKey - Alterando o foco de acordo com a tecla

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.