Usuário com melhor resposta
mudando a cor de um celula no datagridviewer em c#

Pergunta
-
Ola Amigos!!
fiz com que meu datagrid mude a cor de uma determinada celula!!
mas tem como mudar somente a cor do que esta mostrando para o usuario, ou seja, a linhas q estao abaixo do limite do layout do datagrid so mostraria quando o usuario rolar o grid para baixo ou par cima!!!(objetivo rapidez!!)
eu estou usando o evento RowPrePaint e ja usei tambem o CellFormatting(mas fica entrando no evento toda hora mesmo o grid estando parado (loop constante)!!) existe algum evento que eu poderia usar para ativar somente quando o datagridviewer estivesse em refresh!!
private void dataGridView_Dados_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e) { string cConteudo = this.dataGridView_Dados.Rows[e.RowIndex].Cells[this.dataGridView_Dados.Columns.Count - 1].Value.ToString().Trim(); if (this.dataGridView_Dados.Rows[e.RowIndex].Cells[this.dataGridView_Dados.Columns.Count - 1].Value != null && cConteudo == "Excluido") { this.dataGridView_Dados.Columns[this.dataGridView_Dados.Columns.Count - 1].DefaultCellStyle.SelectionForeColor = Color.Red; this.dataGridView_Dados.Columns[this.dataGridView_Dados.Columns.Count - 1].DefaultCellStyle.ForeColor = Color.Red; } else if (this.dataGridView_Dados.Rows[e.RowIndex].Cells[this.dataGridView_Dados.Columns.Count - 1].Value != null && cConteudo == "Inativo") { this.dataGridView_Dados.Columns[this.dataGridView_Dados.Columns.Count - 1].DefaultCellStyle.SelectionForeColor = Color.Maroon; this.dataGridView_Dados.Columns[this.dataGridView_Dados.Columns.Count - 1].DefaultCellStyle.ForeColor = Color.Maroon; } else { this.dataGridView_Dados.Columns[this.dataGridView_Dados.Columns.Count - 1].DefaultCellStyle.SelectionForeColor = Color.Black; this.dataGridView_Dados.Columns[this.dataGridView_Dados.Columns.Count - 1].DefaultCellStyle.ForeColor = Color.Black; } }
Respostas
-
amigo ta mais para "How to/Customização" mas alterei para :
private void MudaCorCelula(object sender, DataGridViewCellFormattingEventArgs e) { //string cConteudo = this.dataGridView_Dados.Rows[e.RowIndex].Cells[this.dataGridView_Dados.Columns.Count - 1].Value.ToString().Trim(); string cConteudo = this.dataGridView_Dados.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString().Trim(); if (cConteudo == "Excluido") { } if (e.Value != null && cConteudo == "Excluido") { this.dataGridView_Dados.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.SelectionForeColor = Color.Red; this.dataGridView_Dados.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.ForeColor = Color.Red; // this.dataGridView_Dados.Columns[this.dataGridView_Dados.Columns.Count - 1].DefaultCellStyle.SelectionForeColor = Color.Red; // this.dataGridView_Dados.Columns[this.dataGridView_Dados.Columns.Count - 1].DefaultCellStyle.ForeColor = Color.Red; } else if (e.Value != null && cConteudo == "Inativo") { this.dataGridView_Dados.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.SelectionForeColor = Color.Maroon; this.dataGridView_Dados.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.ForeColor = Color.Maroon; //this.dataGridView_Dados.Columns[this.dataGridView_Dados.Columns.Count - 1].DefaultCellStyle.SelectionForeColor = Color.Maroon; //this.dataGridView_Dados.Columns[this.dataGridView_Dados.Columns.Count - 1].DefaultCellStyle.ForeColor = Color.Maroon; } else if (e.Value != null && cConteudo == "Ativo") { this.dataGridView_Dados.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.SelectionForeColor = Color.Black; this.dataGridView_Dados.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.ForeColor = Color.Black; //this.dataGridView_Dados.Columns[e.ColumnIndex].DefaultCellStyle.SelectionForeColor = Color.Black; //this.dataGridView_Dados.Columns[e.ColumnIndex].DefaultCellStyle.ForeColor = Color.Black; } }
funcionou!!!
- Sugerido como Resposta Juliano Nunes Silva Oliveira quarta-feira, 7 de março de 2018 11:45
- Marcado como Resposta Filipe B CastroModerator quarta-feira, 7 de março de 2018 17:26
Todas as Respostas
-
Boa tarde, JuniorCamilo. Tudo bem?
Obrigado por usar o fórum MSDN.
Essa seria uma questão de "How to/Customização" ou "Break Fix/Erro"?
Atenciosamente,Filipe B de Castro
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
-
amigo ta mais para "How to/Customização" mas alterei para :
private void MudaCorCelula(object sender, DataGridViewCellFormattingEventArgs e) { //string cConteudo = this.dataGridView_Dados.Rows[e.RowIndex].Cells[this.dataGridView_Dados.Columns.Count - 1].Value.ToString().Trim(); string cConteudo = this.dataGridView_Dados.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString().Trim(); if (cConteudo == "Excluido") { } if (e.Value != null && cConteudo == "Excluido") { this.dataGridView_Dados.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.SelectionForeColor = Color.Red; this.dataGridView_Dados.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.ForeColor = Color.Red; // this.dataGridView_Dados.Columns[this.dataGridView_Dados.Columns.Count - 1].DefaultCellStyle.SelectionForeColor = Color.Red; // this.dataGridView_Dados.Columns[this.dataGridView_Dados.Columns.Count - 1].DefaultCellStyle.ForeColor = Color.Red; } else if (e.Value != null && cConteudo == "Inativo") { this.dataGridView_Dados.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.SelectionForeColor = Color.Maroon; this.dataGridView_Dados.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.ForeColor = Color.Maroon; //this.dataGridView_Dados.Columns[this.dataGridView_Dados.Columns.Count - 1].DefaultCellStyle.SelectionForeColor = Color.Maroon; //this.dataGridView_Dados.Columns[this.dataGridView_Dados.Columns.Count - 1].DefaultCellStyle.ForeColor = Color.Maroon; } else if (e.Value != null && cConteudo == "Ativo") { this.dataGridView_Dados.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.SelectionForeColor = Color.Black; this.dataGridView_Dados.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.ForeColor = Color.Black; //this.dataGridView_Dados.Columns[e.ColumnIndex].DefaultCellStyle.SelectionForeColor = Color.Black; //this.dataGridView_Dados.Columns[e.ColumnIndex].DefaultCellStyle.ForeColor = Color.Black; } }
funcionou!!!
- Sugerido como Resposta Juliano Nunes Silva Oliveira quarta-feira, 7 de março de 2018 11:45
- Marcado como Resposta Filipe B CastroModerator quarta-feira, 7 de março de 2018 17:26