WinForms の DataGridView ヘッダーを幅いっぱいに自動調整する方法

はじめに

C# の Windows Forms アプリケーションでは、一覧データを表示する際に DataGridView をよく使います。

しかし、デフォルトの状態だと列幅が固定されており、フォームの幅いっぱいに見出し(ヘッダー行)が広がらず、見た目が不自然になってしまいます。

今回は、ヘッダー行を自動的に幅いっぱいに広げる方法 を解説します。

変更前

変更後(幅をいっぱいに合わせる)


1. プロパティで設定する方法(初心者向け)

最も簡単なのは、Visual Studio の プロパティウィンドウ で AutoSizeColumnsMode を設定する方法です。

  1. フォーム上の DataGridView を選択
  2. プロパティウィンドウを開く
  3. AutoSizeColumnsMode を Fill に設定

これだけで、列が DataGridView の幅に合わせて自動調整されます。


2. コードで設定する方法(応用)

コードから制御する場合は、フォームのロード時に以下を追加します。

private void Form1_Load(object sender, EventArgs e)
{
    // 列をフォーム幅いっぱいに自動調整
    dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;

    // 列ごとの比率を調整する場合
    dataGridView1.Columns[0].FillWeight = 40; // 書名(40%)
    dataGridView1.Columns[1].FillWeight = 30; // 著者(30%)
    dataGridView1.Columns[2].FillWeight = 30; // 値段(30%)
}
  • FillWeight は列幅の「比率」を表します。
  • 合計に対して自動的に計算されるので、レイアウトを柔軟に調整できます。

3. 内容に応じて幅を自動調整する方法

もし「列ごとの内容(文字数)に応じて幅を決めたい」場合は、次の設定を使います。

dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
  • 各セルの文字数に合わせて幅を決めてくれます。
  • ただし列数が多い場合は、横スクロールバーが出ることがあるので注意が必要です。

まとめ

  • 均等に広げたい → AutoSizeColumnsMode = Fill
  • 列ごとの比率を調整したい → FillWeight を活用
  • 文字数に応じて調整したい → AllCells

UI の見やすさはアプリの印象を大きく左右します。

1. AutoSizeColumnsMode とは?

  • DataGridView の列幅をどう自動調整するかを決めるプロパティ です。
  • ユーザーが手動でドラッグして列幅を変更しなくても、プログラムやデータに応じて列幅を最適化できます。

2. 主な設定値一覧

以下が代表的な DataGridViewAutoSizeColumnsMode の値です。

設定値動作
None自動調整しない(デフォルト)。列幅は固定。
AllCells各列の全セル(ヘッダー+データ)を対象に、内容が収まるように幅を調整。
AllCellsExceptHeaderデータ部分のセルの内容に合わせて幅を調整(ヘッダーは無視)。
DisplayedCells現在表示されているセルの内容に合わせて幅を調整(非表示部分は考慮しない)。
DisplayedCellsExceptHeader表示されているセルのデータのみを基準に幅を調整。
ColumnHeader列ヘッダーの文字だけを基準に幅を調整。
FillDataGridView 全体の幅いっぱいに列を自動的に割り当てる(比率は FillWeight で調整可能)。

3. よく使うパターン

  • 業務アプリなどで見た目を揃えたい→ Fill を使って幅を均等または比率で割り振る。
  • 内容が短い文字列ばかり→ AllCells にして文字数にフィットさせる。
  • スクロールが多いテーブルでパフォーマンスを優先したい→ DisplayedCells にして、表示部分だけを対象にする。

4. コード例

// 列幅を DataGridView 全体にフィットさせる
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;

// 文字数に合わせて幅を調整する
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;

// ヘッダー幅だけに合わせる
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.ColumnHeader;

5. Fill と FillWeight の組み合わせ

Fill を使う場合は、各列の FillWeight プロパティを設定することで比率を決められます。

dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
dataGridView1.Columns[0].FillWeight = 40; // 書名(広め)
dataGridView1.Columns[1].FillWeight = 30; // 著者
dataGridView1.Columns[2].FillWeight = 30; // 値段

これで「書名は広めに、著者と値段は同じ幅で」など柔軟に調整できます。


まとめ

  • AutoSizeColumnsMode は 列幅を自動調整する仕組み
  • 代表的なのは Fill(幅いっぱいに割り当て) と AllCells(文字数に合わせる)
  • Fill と FillWeight を組み合わせれば、実務でよくある「見やすさ調整」に便利

特に DataGridView を使った業務アプリでは、ユーザーがストレスなく使えるように、列幅の自動調整を取り入れるのがおすすめです。

訪問数 17 回, 今日の訪問数 17回