protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
var g = e.Graphics;
var clipRect = e.ClipRectangle;
...
}
Invalidate(Rectangle.Round(rect));
yourDataGridView.SuspendDrawing();
// обновление ваших полей
yourDataGridView.ResumeDrawing();
var row = this.dataGridView2.Rows[i]; // чтобы меньше проверки на индекс дергать
row.Cells[0].Value = ...;