Just because you need those fields in other places in the program doesn't mean you have to add them to the dgv. But since you don't iterate through the columns, they are probably not the problem.

I ran this test,

Code:
        MessageBox.Show("ready")

        For rowIndex = 0 To DataGridView1.RowCount - 1

            With DataGridView1.Rows(rowIndex).Cells("GroupId").Style
                .BackColor = Color.Red
                .ForeColor = Color.White
                .SelectionForeColor = Color.White
                .SelectionBackColor = Color.Black
                .Font = New Font(DataGridView1.Font, FontStyle.Bold)

            End With


        Next

        MessageBox.Show("Done  " & dt.Rows.Count.ToString)
There were 444 row and the result was almost instant. So are you sure this is what's slowing down your program. Have you ran it without the formatting?