🐱
データグリッドビューのコンボボックスセルの背景色を値によって変更する
はじめに
最近のプロジェクトで
データグリッドビューのコンボボックスの背景色を値によって制御したかったので、
下記のように実装してみました。
コード
// FlatStyleをFlatに設定
((DataGridViewComboBoxColumn)Dgv.Columns[0]).FlatStyle = FlatStyle.Flat;
/// <summary>
/// 値編集時イベント
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Dgv_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (Dgv[e.ColumnIndex, e.RowIndex].Value != null)
{
if (Dgv[e.ColumnIndex, e.RowIndex].Value.ToString() == "×")
{
// 背景色を赤に変更
Dgv[e.ColumnIndex, e.RowIndex].Style.BackColor = Color.Red;
}
else
{
// 背景色をデフォルトに戻す
Dgv[e.ColumnIndex, e.RowIndex].Style.BackColor = SystemColors.Window;
}
}
}
解説
まず、データグリッドビューのコンボボックスのFlatStyleをFlatに設定します。
これを設定しないと背景色を設定しても、見た目が変わりません。
次にデータグリッドビューCellValueChangedに値によって背景色をさせる処理を記述します。
今回はコンボボックスで選択された値が×の場合は背景色を赤に、
それ以外の場合はデフォルト色にするよう記述しています。
参考にしたサイト
Discussion