Windows Forms の DataGridView で、マウスホバーしているセルの背景色を変更するには、DataGridView の CellMouseEnter イベントと、CellMouseLeave イベントを組み合わせることで実現できます。
マウスがセルに入った時のセル背景色の変更
まずは、マウスがセルに入ったタイミングで発生する、CellMouseEnter イベントをハンドルし、セルの背景色を配色します。ヘッダー行列やヘッダー列では処理を行わない制御を加えます。
private void DataGridView1_CellMouseEnter(object? sender, DataGridViewCellEventArgs e)
{
// ヘッダー行や列を除外
if (e.RowIndex < 0 || e.ColumnIndex < 0)
{
return;
}
// ホバー時の色
this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.BackColor = Color.LightBlue;
}
マウスがセルから出た時のセル背景色の復元
一方で、マウスがセルから出たタイミングで発生する、CellMouseLeave イベントをハンドルし、マウスが外れるセルの背景色をもとに戻します。CellMouseEnter イベントでの実装と同様に、ここでも、ヘッダー行列やヘッダー列では処理を行わない制御を加えます。
private void DataGridView1_CellMouseLeave(object? sender, DataGridViewCellEventArgs e)
{
// ヘッダー行や列を除外
if (e.RowIndex < 0 || e.ColumnIndex < 0)
{
return;
}
// 元の色に戻す
this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.BackColor = Color.White;
}
サンプルアプリケーション
サンプルアプリケーションは、.NET 8 で作成されています。
実行結果
下記実行結果では、Name 列 4 行目のセルにマウスホバーしています。
