Merci @Gabriel-Perez et @Groo, super idée ! Au cas où d'autres le voudraient, voici une version en VB testée dans Visual Studio 2012.
Dans mon cas, je voulais que les chiffres apparaissent en haut à droite alignés dans l'en-tête de ligne.
Private Sub MyDGV_RowPostPaint(sender As Object, _
e As DataGridViewRowPostPaintEventArgs) Handles MyDataGridView.RowPostPaint
' Automatically maintains a Row Header Index Number
' like the Excel row number, independent of sort order
Dim grid As DataGridView = CType(sender, DataGridView)
Dim rowIdx As String = (e.RowIndex + 1).ToString()
Dim rowFont As New System.Drawing.Font("Tahoma", 8.0!, _
System.Drawing.FontStyle.Bold, _
System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Dim centerFormat = New StringFormat()
centerFormat.Alignment = StringAlignment.Far
centerFormat.LineAlignment = StringAlignment.Near
Dim headerBounds As Rectangle = New Rectangle(_
e.RowBounds.Left, e.RowBounds.Top, _
grid.RowHeadersWidth, e.RowBounds.Height)
e.Graphics.DrawString(rowIdx, rowFont, SystemBrushes.ControlText, _
headerBounds, centerFormat)
End Sub
Vous pouvez également obtenir la police par défaut, rowFont = grid.RowHeadersDefaultCellStyle.Font
, mais elle peut ne pas être aussi belle. La capture d'écran ci-dessous utilise la police Tahoma.