DataGridView のカラムにチェックボックスを入れて、チェックボックスをクリックしたときにリアルタイムにDataGridViewの同一行等に対してスタイルを変更したり、カラムに書き込んだりする方法がやっとわかった。
要するにDataGridViewのCurrentCellDirtyStateChangedイベントで、チェックボックスを配置しているカラムのイベントを捉えて、コミットさせて、そのカラムの値を判定してチェックボックスの状態を取得すればいいわけねぇ。
private void Form1_Load(object sender, EventArgs e)
{
string[] strItem = {"Desktop PC", "Note PC", "Tablet" };
for (int i = 0 ; i < strItem.Length; i++)
{
dataGridView1.Rows.Add();
dataGridView1["Column2", i].Value = strItem[i];
}
}
private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
if (dataGridView1.CurrentCellAddress.X == 0 && dataGridView1.IsCurrentCellDirty)
{
// — Commit!
dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
if (dataGridView1["Column1",
dataGridView1.CurrentCellAddress.Y].Value.ToString() == "True")
{
for (int i = 0; i < dataGridView1.Columns.Count; i++)
{
dataGridView1[i, dataGridView1.CurrentCellAddress.Y].Style.BackColor = Color.Red;
}
dataGridView1["Column3", dataGridView1.CurrentCellAddress.Y].Value = "購入";
}
else
{
for (int i = 0; i < dataGridView1.Columns.Count; i++)
{
dataGridView1[i, dataGridView1.CurrentCellAddress.Y].Style.BackColor = Color.White;
}
dataGridView1["Column3", dataGridView1.CurrentCellAddress.Y].Value = null;
}
}
}