INDICE DO DATAGRIDVIEW

PERCIFILHO 07/11/2011 10:52:28
#388607
Bom dia meus amigos.

Gostaria de saber como obter o índice de uma linha do DataGridView quando eui clicar com o Mouse sobre ela.
è que eu estou usando botões de navegação (o cliente quis assim) para navegar entre os registros do DataGridView, então eu obtendo o índice da linha, vou colocar o código nos eventos dos botões anterior, próximo, etc.
Coloquei esse código no evento KeyUp do DataGridView para o botão próximo:

Private Sub DgvDocumentos_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles DgvDocumentos.KeyUp
If e.KeyCode = Keys.Down Then
indice = DgvDocumentos.CurrentRow.Index - 1
BtnProximoItem_Click(sender, e)
End If
End Sub

Neste código, quando o usuário utilizar o teclado, na linha que ele posicionar, vai guardar o índice da linha e executar o código do botão próximo. Dessa maneira está funcionando, mas eu preciso saber o índice da linha quando o usuário clicar sobre uma linha no DataGridView. Não sei como fazer e nem em qual evento devo colocar o código. Será que alguém pode me ajudar?

Até mais.
GUIMORAES 07/11/2011 13:45:21
#388616
Private Sub DataGridView1_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick
MsgBox(DataGridView1.CurrentRow.Index)
End Sub

Não entendi porque você colocou um evento de Key_Up no Datagrid que percorre as linhas, até porque quando o foco está no datagrid, já é possivel navegar nele com as setas direcionais sem problemas.

Agora para navegar no datagrid sem estar com ela no foco, eu utilizo o seguinte.

Citação:


[ô]Descer
If FGRID.RowCount <> 0 Then
If FGRID.CurrentRow.Index = FGRID.RowCount - 1 Then
Else
FGRID.Rows(FGRID.CurrentRow.Index).Selected = False
FGRID.Rows(FGRID.CurrentRow.Index + 1).Selected = True
FGRID.CurrentCell = FGRID.Rows(FGRID.CurrentRow.Index + 1).Cells(0)
End If
End If



Citação:


[ô]Subir

If FGRID.RowCount <> 0 Then
If FGRID.CurrentRow.Index = 0 Then
Else
FGRID.Rows(FGRID.CurrentRow.Index).Selected = False
FGRID.Rows(FGRID.CurrentRow.Index - 1).Selected = True
FGRID.CurrentCell = FGRID.Rows(FGRID.CurrentRow.Index - 1).Cells(0)
End If
End If



Troque o nome FGRID para o node do seu DataGridView.

Adicione este evento em um botão, ou até mesmo no evento key_up e Key_Down.

Abraços
PERCIFILHO 07/11/2011 16:37:28
#388641
Valeu, amigo, não era bem isso que eu precisava, mas valeu.
Já consegui fazer o que eu queria.
Muito obrigado.
Estou fechando o tópico.

Até mais.
Tópico encerrado , respostas não são mais permitidas