Что мне не нравится в вашем коде, так это то, что вы используете 'new Font ()' для каждой отдельной ячейки. Я считаю, что ваши клетки могут использовать одни и те же объекты шрифтов. Я не уверен, решит ли это вашу проблему, но попробуйте создать предопределенные переменные класса Font. Например, создайте несколько экземпляров класса Font в качестве переменных-членов вашего класса WinForms, а затем просто обратитесь к существующим переменным Font. В Windows GDI каждый шрифт содержит дескриптор (HFONT), который должен быть удален после того, как вы закончили с ним работать. Вы теряете немного производительности здесь.
Например:
private Font _fontArial = new Font("Arial", 8.25F, FontStyle.Regular);
private Font _fontArialBold = new Font("Arial", 8.25F, FontStyle.Bold);
private Font _fontTahoma = new Font("Tahoma", 8.25F, FontStyle.Regular);
, затем просто повторно используйте предопределенные шрифты:
datagridview1.Rows[r].Cells[c].Style.Font = _fontArialBold;
Кроме того, обратите внимание, что вы можете создавать предопределенные стили и заменять целые стили ячеек DataGridView, а не только шрифты.