Я подумал, что это очень простое решение для Windows Forms.Вы можете настроить чертеж по своему усмотрению.
Создайте следующий класс:
Public Class DataGridViewNumberedRow
Inherits DataGridViewRow
Protected Overrides Sub PaintHeader(graphics As System.Drawing.Graphics, clipBounds As System.Drawing.Rectangle, rowBounds As System.Drawing.Rectangle, rowIndex As Integer, rowState As System.Windows.Forms.DataGridViewElementStates, isFirstDisplayedRow As Boolean, isLastVisibleRow As Boolean, paintParts As System.Windows.Forms.DataGridViewPaintParts)
MyBase.PaintHeader(graphics, clipBounds, rowBounds, rowIndex, rowState, isFirstDisplayedRow, isLastVisibleRow, paintParts)
graphics.DrawString(rowIndex + 1, SystemFonts.MenuFont, Brushes.Black, rowBounds)
End Sub
End Class
Затем установите шаблон строки по умолчанию для представления таблицы данных следующим образом:
DataGridView1.RowTemplate = New DataGridViewNumberedRow