none
mudando a cor de um celula no datagridviewer em c# RRS feed

  • 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;
                }
            }


    terça-feira, 6 de março de 2018 11:48

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!!!

    quarta-feira, 7 de março de 2018 10:38

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.

    terça-feira, 6 de março de 2018 21:01
    Moderador
  • 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!!!

    quarta-feira, 7 de março de 2018 10:38