DataGridView只调用一次CellFormatting

时间:2015-04-10 14:05:37

标签: c# winforms datagridview background-color

我正在从返回的数据库表创建一个动态DataGridView。我需要根据值将一些单元格更改为红色。我为 CellFormatting 事件分配了一个函数,但每次用户点击任何单元格/行时都会调用该函数(这会降低表单的速度)。

我想只在加载时执行该功能。

我尝试通过循环表来设置样式,但背面颜色没有改变。我只在使用CellFormatting事件时才能使用它。

我的代码:

this.dgv.CellFormatting += new System.Windows.Forms.DataGridViewCellFormattingEventHandler(this.Dgv_CellFormatting);

并在函数中更改颜色

    private void Dgv_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {
        if (e.Value != null)
        {
            if (e.ColumnIndex == 0)
            {
                if ((int)e.Value >= 5)
                {
                    e.CellStyle.BackColor = Color.Red;
                }
            }
        }

    }

2 个答案:

答案 0 :(得分:2)

您可以将代码放在“DataBindingComplete”中。

示例

private void dgv_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
    dgv.Rows[0].Cells[0].Style.BackColor = Color.Red;
}

答案 1 :(得分:0)

使用GridView_RowDataBound事件。

if (e.Row.RowType == DataControlRowType.DataRow)
{
  //condition 
    If(e.Row.cells[3].Text.ToString() == "value2")
    {
    e.Row.BackColor = Drawing.Color.Red // 
    }
}