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
で変更可能です。要件に応じて調整いただければと思います。