PULAR LINHA NA DATAGRIDVIEW
Olá, amigos, estou querendo fazer uma coisa, não sei se é possÃvel, mas deve ser...
Num DataGridView, mostro todos os movimentos de um produto no estoque e na coluna 4, se for movimento de Ajuste, aparece escrito, senão, fica em branco.
Fiz com que se for movimento de ajuste, a linha ficasse funco branco e cor da fonte vermelho.
Agora eu queria fazer com que ao percorrer o DataGridView com as setas, quando encontrasse esccrito na coluna 4 a palavra Ajuste, o cursor pulasse essa linha, indo para a linha seguinte (acima ou abaixo).
Se é que você me entenderam, tem como fazer isso?
Até mais.
Num DataGridView, mostro todos os movimentos de um produto no estoque e na coluna 4, se for movimento de Ajuste, aparece escrito, senão, fica em branco.
Fiz com que se for movimento de ajuste, a linha ficasse funco branco e cor da fonte vermelho.
Agora eu queria fazer com que ao percorrer o DataGridView com as setas, quando encontrasse esccrito na coluna 4 a palavra Ajuste, o cursor pulasse essa linha, indo para a linha seguinte (acima ou abaixo).
Se é que você me entenderam, tem como fazer isso?
Até mais.
Bom dia,
Amigo tenta assim:
Dessa forma ele vai pular para a linha seguinte.
Até mais.
Amigo tenta assim:
Dim varlinha As Integer
varlinha = 0
If Me.DataGridView1.CurrentRow.Cells(0).Value = [Ô]Ajuste[Ô] Then
varlinha = DataGridView1.CurrentRow.Index
varlinha += 1
DataGridView1.CurrentCell = DataGridView1.Rows(varlinha).Cells(4)
End If
Dessa forma ele vai pular para a linha seguinte.
Até mais.
Mas em qual evento eu coloco esse código?
Até mais.
Até mais.
Bom,
Estava testando aqui, e se colocar para quando vc utilizar as setas da erro, o motivo não sei ainda. Serve para quando clicar na linha?
Estava testando aqui, e se colocar para quando vc utilizar as setas da erro, o motivo não sei ainda. Serve para quando clicar na linha?
é assim, vamos supor que a linha que está com o movimento de ajuste seja a 5a. linha.
Então, quando abre o formulário, a linha selecionada é a primeira. O usuário vai com a seta para baixo, navegando pelos registros do DataGridView, passa para a segunda, terceira, quarta linha e quando clicar seta para baixo, ele pula a quinta linha e vai para a sexta linha, [Ô]pulando[Ô], assim, a linha onde o movimento é de ajuste.
Deu para entender?
Até mais.
Então, quando abre o formulário, a linha selecionada é a primeira. O usuário vai com a seta para baixo, navegando pelos registros do DataGridView, passa para a segunda, terceira, quarta linha e quando clicar seta para baixo, ele pula a quinta linha e vai para a sexta linha, [Ô]pulando[Ô], assim, a linha onde o movimento é de ajuste.
Deu para entender?
Até mais.
Boa noite,
Colega tenta assim:
Espero ter ajudado...
Colega tenta assim:
Private Sub DataGridView1_CellEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellEnter
Try
Dim varlinha As Integer
varlinha = 0
If Me.DataGridView1.CurrentRow.Cells(0).Value = [Ô]Ajuste[Ô] Then
varlinha = DataGridView1.CurrentRow.Index
varlinha += 1
DataGridView1.CurrentCell = DataGridView1.Rows(varlinha).Cells(4)
End If
Catch a As Exception
End Try
End Sub
Espero ter ajudado...
Bom dia, amigo, deu certo. Mas e for a primeira linha que eu tenha que pular?
Até mais.
Até mais.
Já resolvi. Obrigado pela ajuda.
Até mais.
Até mais.
Bom dia,
Posta ai como ficou seu código final, pode ajudar pessoas futuramente, não se esqueça de fechar o tópico....
Abraços...
Posta ai como ficou seu código final, pode ajudar pessoas futuramente, não se esqueça de fechar o tópico....
Abraços...
No evento Load do formulário, eu preencho a grid.
Depois eu faço um laço, para alterar a cor e fundo das linhas onde a coluna 4 está escrito AJUSTE.
E se a primeira linha for a que tiver que pular, ele passa o foco para a segunda linha:
For i As Integer = 0 To Dgv.Rows.Count - 1
If Dgv.Rows(i).Cells(4).Value = [Ô]* AJUSTE *[Ô] Then
Dgv.Rows(i).DefaultCellStyle.BackColor = Color.White
Dgv.Rows(i).DefaultCellStyle.ForeColor = Color.Red
If i = 0 Then
Dgv.CurrentCell = Dgv.Rows(1).Cells(4)
End If
End If
Next
AÃ, no evento CellEnter da Grid, o código que você postou:
Private Sub Dgv_CellEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles Dgv.CellEnter
Try
Dim varlinha As Integer
varlinha = 0
If Dgv.CurrentRow.Cells(4).Value = [Ô]* AJUSTE *[Ô] Then
varlinha = Dgv.CurrentRow.Index
varlinha += 1
Dgv.CurrentCell = Dgv.Rows(varlinha).Cells(4)
End If
Catch a As Exception
End Try
End Sub
Funcionou.
Agora eu preciso saber o seguinte:
Na imagem, repare que na linha selecionada, na coluna data fica pontilhado. Não tem como o registro ficar selecionado, sem a coluna ficar pontilhada. Existe alguma propriedade que tenho que alterar?
Até mais.
Depois eu faço um laço, para alterar a cor e fundo das linhas onde a coluna 4 está escrito AJUSTE.
E se a primeira linha for a que tiver que pular, ele passa o foco para a segunda linha:
For i As Integer = 0 To Dgv.Rows.Count - 1
If Dgv.Rows(i).Cells(4).Value = [Ô]* AJUSTE *[Ô] Then
Dgv.Rows(i).DefaultCellStyle.BackColor = Color.White
Dgv.Rows(i).DefaultCellStyle.ForeColor = Color.Red
If i = 0 Then
Dgv.CurrentCell = Dgv.Rows(1).Cells(4)
End If
End If
Next
AÃ, no evento CellEnter da Grid, o código que você postou:
Private Sub Dgv_CellEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles Dgv.CellEnter
Try
Dim varlinha As Integer
varlinha = 0
If Dgv.CurrentRow.Cells(4).Value = [Ô]* AJUSTE *[Ô] Then
varlinha = Dgv.CurrentRow.Index
varlinha += 1
Dgv.CurrentCell = Dgv.Rows(varlinha).Cells(4)
End If
Catch a As Exception
End Try
End Sub
Funcionou.
Agora eu preciso saber o seguinte:
Na imagem, repare que na linha selecionada, na coluna data fica pontilhado. Não tem como o registro ficar selecionado, sem a coluna ficar pontilhada. Existe alguma propriedade que tenho que alterar?
Até mais.
Esqueci de enviar a imagem. AÃ está.
Tópico encerrado , respostas não são mais permitidas