Search code examples
c#.netdatagridview

Compare old and new value in DataGridView cell


How to change DataGridView cell ForeColor based on whether new cell value is > or < than current/old cell value? Is there an event which passes the new value before the current is changed, so I can compare them?

The data is updated from underlying source, and may be bound by BindingSource.


Solution

  • I ran into a similar issue. I tackled this by using the CellValidating event instead:

    void dgv_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
    {
        var oldValue = dgv[e.ColumnIndex, e.RowIndex].Value;
        var newValue = e.FormattedValue;
    }
    

    Admittedly, I just needed access to the old value, I didn't need to perform any formatting. I'm sure you can apply formatting through this event handler, though.