Antes de tudo, é importante saber da existencia deste link
Inglês
Português
Nele você vai encontrar todas as propriedades,métodos e Eventos do seu DataGridView
E a explicação de uma por uma.
Durante a explicação
SeuDataGridView = Nome do seu DataGridView
"SuaColuna" = Nome da coluna que está a informação que você quer pegar.
Como pegar o valor de uma célula em uma linha selecionada ?
Existem vários modos, um bom modo é usar o evento CellEnter
CellEnter | Ocorre quando o célula corrente alterações noDataGridView controle ou quando o controle recebe o foco de entrada. |
Isso quer dizer, quando o Foco passar na linha ou célula, o evento irá acontecer, ele é bom para pegar dados de maneira eficiente.
Private Sub SeuDataGridView_CellEnter(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles SeuDataGridView.CellEnter
Dim Informacao As String If SeuDataGridView .Rows.Count > 0 Then Informacao = SeuDataGridView.CurrentRow.Cells("SuaColuna").Value.ToString() End If End Sub
Simples assim.
Lembrando que os dados dentro do DataGridView podem ser datas,decimais então vamos prestar atenção na hora de atribuir o valor a variável.
Como colorir uma linha com base em uma condição
Existem também "N" maneiras de se fazer isso, a maneira que eu recomendo é criar uma funcão VOID que leia TODA A GRADE para pintar a grade com base na condição que você escolher.
Mas, por que não usar o CellEndEdit?
CellEndEdit | Ocorre quando a célula selecionada sai do modo de edição. |
Vamos usar Sim o CellEndEdit, mas não apenas ele.
A explicação é a seguinte, você editou a célula, você chama o seu Atualiza_Cores_Grade.
A grade vai ficar da cor com base na condição.
Mas o que vai acontecer quando você abrir o formulário novamente ?
Isso mesmo, ela vai ficar com a cor normal.
Por isso criamos uma função para que toda vez que o Formulário carregar ele verificar e pintar as
linhas conforme a condição
Função:
private void Atualiza_Cores_Grade() { try { foreach (DataGridViewRow r in SeuDataGridView.Rows) { if (Convert.ToDecimal(SeuDataGridView["Preço", r.Index].Value) < Convert.ToDecimal(SeuDataGridView["Preço_Minimo", r.Index].Value)) { SeuDataGridView.Rows[r.Index].DefaultCellStyle.BackColor = Color.Red; } else { SeuDataGridView.Rows[r.Index].DefaultCellStyle.BackColor = Color.LightGoldenrodYellow; } } }
Repare que
if CONDIÇÃO = TRUE
Linha fica vermelha
Else
Linha fica amarela
End if
Pode ser substituido para outra condição.
Onde deve ser colocada:
No evento Load do Formulário
No evento CellEndEdit do Formulário
E aonde você achar necessário.
Definindo valor a uma célula
Nenhum comentário:
Postar um comentário