Ir para conteúdo

Arquivado

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

ZecaLoteiro

DataGridView.KeyDown Não captura (EditingMode)

Recommended Posts

Não, não é minha função que manda pra linha de baixo... isso é padrão do gridView!

 

Mas quando chega na ultima linha, e dá enter, por default, ele não faz mais nada, aí entra minha função.... para colocar o foco na primeira linha da proxima coluna.... funciona para qualquer tecla, menos para o ENTER.

 

;)

 

Valeu pela força! ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade não é para qualquer tecla, pois quando testei aqui ele não passou para a linha seguinte enquanto eu digitava. O erro mais provável é que estamos utilizando uma handler já utilizada do grid, tente alterar para outra tecla, como tab

Compartilhar este post


Link para o post
Compartilhar em outros sites

não funcionou com qualquer tecla pq no código tá pra funcionar com enter....

 

 

Se vc alterar o código para <> ENTER vai funcionar com qualquer tecla, CORRIGINDO, QUASE QUALQUER TECLA, excluindo ENTER e TAB...

 

 

De resto funciona com ALT, CTRL, SHIFT, F1, F2, F3, INSERT, HOME, NUN LOCK... menos ENTER e TAB, pq???

Pq são teclas que por default tem ação definida para o DataGridView... só queria desabilitar a função padrão delas.

 

 

Já fiz o teste tirando o handler, e no exemplo que upei tb já não está com o handler no grid.

 

Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não acho que seja possível remover as handlers padrão do sistema... O que acredito que dê para fazer é trocar as teclas apenas... Infelizmente

Compartilhar este post


Link para o post
Compartilhar em outros sites

Até é possível, mas tenho que sobreescrever a classe gridview toda....

 

por enquanto coloquei a tecla ESPAÇO para seguir para a proxima coluna...

 

Vlw.

 

 

RESOLVIDO! :)

 

 

 

:coolio:

 

Sobreescrevi a function ProcessCmdKey que era responsável pelas funções padrão do Enter/TAB....

 

 Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean
    If keyData = Keys.Enter Then
      Dim sender As Object = Me.ActiveControl.Parent.Parent
      If TypeOf sender Is DataGridView Then
        Dim ponto As New Point(sender.CurrentCellAddress().X, sender.CurrentCellAddress().Y)
        If ponto.Y = sender.Rows.Count - 1 Then
          sender.CurrentCell = sender(ponto.X + 1, 0)
          keyData = Nothing
          Return True
        End If
      End If
    End If
    Return MyBase.ProcessCmdKey(msg, keyData)
  End Function

 

 

Valeu pela força! ;)

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.