DataGridView:特定のセルの背景色を変更する(サンプルあり)

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

DataGridView で「入力エラーがあるセルを目立たせたい」、「ボタンを押したタイミングで特定のセルだけ色を変えたい」という場面はよくあります。

C# の DataGridView では、Rows[行].Cells[列].Style.BackColor プロパティに色を指定することで、任意のセルの背景色を変更できます。

今回は、ボタンをクリックしたタイミングで指定したセルの色を変える実装コードと、その仕組みを解説します。

背景色を変更する仕組み

DataGridView のセルを個別に配色するには、セルの Style(スタイル) を操作します。
基本の形は以下の通りです。

dataGridView1.Rows[行].Cells[列].Style.BackColor = 変更したい色;

行は 0 から数え列は "Name" などの列名か 1 などの数字(インデックス) で指定します。

実装コード

画面に DataGridView(dataGridView1)と、背景色を変更するためのボタン(btnChangeColor)が配置されているものとします。ボタンをクリックすると、2行目の「Name」列の背景色を「赤色(Red)」に変更するコードです。

Form1.cs
using System.Data;
namespace DataGridView_ChangeCellColor;
public partial class Form1 : Form
{
private DataTable _dataTable = new DataTable();
public Form1()
{
InitializeComponent();
InitializeData();
InitializeDataGridView();
}
private void InitializeData()
{
// テストデータの準備
_dataTable.Columns.Add("ID", typeof(string));
_dataTable.Columns.Add("Name", typeof(string));
_dataTable.Columns.Add("Price", typeof(int));
_dataTable.Rows.Add("P001", "ノートパソコン", 120000);
_dataTable.Rows.Add("P002", "USBメモリ", 2500);
_dataTable.Rows.Add("P003", "液晶モニター", 35000);
}
private void InitializeDataGridView()
{
dataGridView1.DataSource = _dataTable;
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
dataGridView1.AllowUserToAddRows = false;
// ボタンのクリックイベントを購読
btnChangeColor.Click += BtnChangeColor_Click;
}
/// <summary>
/// 「背景色変更」ボタンのクリックイベント
/// </summary>
private void BtnChangeColor_Click(object? sender, EventArgs e)
{
// 2行目(インデックス1)の「Name」列の背景色を黄色に変更
this.dataGridView1.Rows[1].Cells["Name"].Style.BackColor = Color.Red;
}
}

ソースコード

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

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

ボタンをクリックすることで、2行目「Name」列のセルの背景色が赤くなることが分かります。

実装のポイント

1. 割り当てる色は “Color.〇〇” で選ぶ

背景色に指定する色は、Color 構造体を使って指定します。 今回のサンプルで使っている Color.Red(赤色)以外にも、Color.Yellow(黄)や Color.LightPink(薄いピンク)など、様々な色が標準で用意されているので、画面のデザインに合わせて選ぶことができます。

2. 列の指定は「数字」でも同じように動く

前回の値の取得と同様に、列の指定部分は名前だけでなく左から数えた数字(インデックス)に変えても同じように動作します。

// 💡 左から2番目(インデックス1)という数字の指定でも、背景色をピンクに変更できます
this.dataGridView1.Rows[1].Cells[1].Style.BackColor = Color.LightPink;

列の順番をマウスで入れ替える可能性がある画面ならば「列名指定」、固定の並び順で手軽に書きたいなら「数字指定」と使い分けるのがおすすめです。

3. 色を元に戻したいときは “Color.Empty”

ボタン操作などで一度変更したセルの背景色を、元の標準の色(白や交互の行の色など)にリセットしたい場合は、Color.Empty を指定します。

// 💡 背景色をクリアして、DataGridViewの標準の色に戻します
this.dataGridView1.Rows[1].Cells["Name"].Style.BackColor = Color.Empty;

「クリアボタン」などを別に作って上記コードを呼び出すようにすれば、色の一括リセットなども実装できます。

まとめ

特定のセルの色を変える基本は、Rows[行].Cells[列].Style.BackColor となります。

  • セルの背景色を変えるには .Style.BackColor プロパティを使う
  • 行は 0 から数える(2行目は Rows[1]
  • 列の指定は "Name"(列名)でも 1(左からの番号)でもどちらでも可能
  • 色をリセットして元の標準色に戻したいときは Color.Empty を代入する

DataGridView での UI 開発の参考になりましたら幸いです。


💬 コメント