DataGridView:ヘッダーとセルのフォント変更方法(サンプルあり)

📋 目次(クリックで展開)

DataGridView を使って業務システムの画面をデザインする際、「全体の文字サイズを大きくして視認性を上げたい」、「ヘッダー部分だけ太字(ボールド)にして強調したい」といったフォント変更の要望はよくあります。

今回は、DataGridView のヘッダー(列・行)と、データセルそれぞれを、コードから一括で確実にフォント変更する手順について解説します。

フォント一括変更の2つのプロパティ

「ヘッダー」と「データセル」を一括変更する際には、次のの2つのプロパティをそれぞれ使用できます。

  • ColumnHeadersDefaultCellStyle.Font:グリッドの最上部にある「列ヘッダー(カラムヘッダー)」のフォントを一括変更します。
  • DefaultCellStyle.Font:データが表示されるすべての「データセル」のフォントを一括変更します。

実装コード

以下は、フォームの初期化タイミング(または画面ロード時)に、列ヘッダーを「10pt・太字」に、データセルを「11pt・通常」に一括で変更するサンプルコードです。

データソースには DataTable を使用してバインドしています。

Form1.cs

Form1.cs
using System.Data;
namespace DataGridView_FontSettings
{
public partial class Form1 : Form
{
private DataTable _dataTable = new DataTable();
public Form1()
{
InitializeComponent();
InitializeDataGridView();
}
private void InitializeDataGridView()
{
// テスト用データの準備
_dataTable.Columns.Add("Code", typeof(string));
_dataTable.Columns.Add("Name", typeof(string));
_dataTable.Rows.Add("P001", "ノートパソコン");
_dataTable.Rows.Add("P002", "USBメモリ");
dataGridView1.DataSource = _dataTable;
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
// ----------------------------------------------------------------------
// DataGridView のフォントを一括変更する処理
// ----------------------------------------------------------------------
// 列ヘッダーのフォントを一括変更(10pt / 太字)
dataGridView1.ColumnHeadersDefaultCellStyle.Font = new Font("MS UI Gothic", 10, FontStyle.Bold);
// データセルのフォントを一括変更(11pt / 通常)
dataGridView1.DefaultCellStyle.Font = new Font("MS UI Gothic", 11, FontStyle.Regular);
// 【実務の配慮】フォントを大きくした場合は、列ヘッダーの高さも自動調整する
dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
}
}
}

実行結果

行ヘッダーとデータセルそれぞれのフォントが変わっていることが確認できます。

サンプルアプリケーション

DataGridView_FontSettings.zip
※ サンプルアプリケーションは、.NET 10 をターゲットに作成しています。

フォント変更時の注意点

DataGridView のフォントを一括変更する際、デザインやパフォーマンスを損なわないために、実務でおきたい注意点が2つあります。

注意点①:フォントを大きくしたのに文字が見切れる問題

コード側でフォントサイズを「9pt」から「12pt」などの大きなサイズに変更した場合、セルの幅やヘッダーの高さが古いサイズのままだと、文字の下側や右側が見切れてしまいます。

これを防ぐために、フォントを変更した際はセットで自動サイズ調整のプロパティを動かします。

// 列ヘッダーの高さ変更を許可し、フォントサイズに合わせて自動調整する
dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
// データセルの高さを、変更後のフォントに合わせて一度自動調整する
dataGridView1.AutoResizeRows(DataGridViewRowHeadersWidthAsStreamDescriptors.AllRows);

注意点②:パフォーマンス(重さ)との関係について

以前の別記事「大量データでも重くならないDataGridViewの条件付き書式対策」では、「描画イベント(CellFormatting)の中で毎回 new Font を避ける(アプリが劇重になる)」と解説しています。

しかし、今回のようにフォームの初期化時などに DefaultCellStyle.Font に対して一度だけ new Font を割り当てる方法であれば、何万行データがあってもパフォーマンスは低下しません。 DataGridView の内部でこの設定されたフォントオブジェクトが全行にわたって使い回されるためです。「行ごとに個別にフォントを変えるならイベントでキャッシュを再利用する」、「画面全体で一括で変えるなら DefaultCellStyle を使う」という使い分けです。

まとめ

今回は、DataGridView のヘッダーとデータセルのフォントを、それぞれ変更するプロパティの設定方法について解説しました。

DataGridView の見た目をコントロールするスタイル(CellStyle)は、階層構造(親子関係)のようになっています。そのため、個別のセルをループで書き換えるのではなく、DefaultCellStyleColumnHeadersDefaultCellStyle を一括で書き換えるのがおすすめです。

今回の記事がフォント変更実装の参考になりましたら幸いです。


💬 コメント