Событие рисования часто вызывается главным обработчиком событий системного менеджера приложений Windows.
Это делается каждый раз, когда элемент управления обновляет свое содержимое.
Это делается, например, при перемещении или изменении размера формы, перемещении мыши над элементом управления, перемещении сверху вниз по z-порядку ...
Вот почему это кажетсяпетля.
Вы можете определить условие для случая, когда вы не хотите рисовать, используя такой флаг в начале метода:
private void TestsDataGrid_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
if ( !paintRequired ) return;
this.TestsDataGrid.Rows[e.RowIndex].Cells["Serial"].Value = (e.RowIndex + 1).ToString();
}
В загрузке формы:
paintRequired = true;
Где-то в вашем коде после загрузки данных из базы данных напишите:
paintRequired = true;
TestsDataGrid.Refresh();
paintRequired = false;
Делайте это каждый раз, когда данные меняются.
Но вы должны использовать вычисляемый столбец:
Создание столбцов выражений