Windows Forms アプリケーションで DataGridView を使っていると、「行ヘッダーに行番号を表示したい」と思うことがあります。標準のプロパティ設定では行番号は表示されないため、自分で描画処理を追加する必要があります。
この記事では、最小限のコードで実現できるシンプルな方法をご紹介します。
実行結果:行ヘッダーに 1, 2, 3… といった行番号を表示
DataGridView の一番左端の列(行ヘッダー)に、行番号が表示されています。

イベントを利用し、DataGridView の左端にある行ヘッダー部分に、行ごとの番号が表示されるようにします。
実装方法
DataGridView の RowPostPaint イベントを使って、行ヘッダーに文字列(行番号)を描画します。
実装コード
// DataGridView の各行が描画された後に呼ばれるイベントハンドラー。
// この中で、行ヘッダーに行番号を描画します。
private void DataGridView1_RowPostPaint(object? sender, DataGridViewRowPostPaintEventArgs e)
{
// sender を DataGridView にキャスト(null の可能性があるため "as" を使用)
var grid = sender as DataGridView;
// 表示する行番号を取得(DataGridView の行インデックスは 0 始まりなので +1)
var rowNumber = (e.RowIndex + 1).ToString();
// 文字列の描画位置と整列方法を設定(中央揃え)
var stringFormat = new StringFormat()
{
Alignment = StringAlignment.Center, // 横方向:中央揃え
LineAlignment = StringAlignment.Center // 縦方向:中央揃え
};
// 行ヘッダー内における描画範囲(矩形)を定義
var headerBounds = new Rectangle(
e.RowBounds.Left, // 行の左端(行ヘッダー部分の開始位置)
e.RowBounds.Top, // 行の上端
grid.RowHeadersWidth, // 行ヘッダーの幅
e.RowBounds.Height // 行の高さ
);
// 行ヘッダーに行番号を描画
// 使用フォントは DataGridView に設定されているフォント
// 描画色はコントロールの標準テキスト色
e.Graphics.DrawString(
rowNumber, // 描画する文字列(行番号)
grid.Font, // 使用するフォント
SystemBrushes.ControlText, // 使用するブラシ(標準テキスト色)
headerBounds, // 描画する矩形領域
stringFormat // 文字列の配置情報(中央揃え)
);
}
イベントの登録
コンストラクターや Form_Load などで、次のようにイベントを登録します。
public Form1()
{
InitializeComponent();
// RowPostPaint イベントの登録
this.dataGridView1.RowPostPaint += DataGridView1_RowPostPaint;
}
サンプル
※ サンプルアプリケーションは、.NET 9 をターゲットにしています。お手元の環境に応じて適宜変更下さい。
まとめ
DataGridView に行番号を表示する方法を紹介しました。行ヘッダーの幅は DataGridView.RowHeadersWidth で変更可能です。要件に応じて調整いただければと思います。