これは、DataGridViewのMSDNページで少し説明されています。ここおよびこちら。
特に彼らは言う:
DataGridViewCheckBoxCellのクリックに対して、このイベントは、
チェックボックスが値を変更するので、計算したくない場合は
現在の値に基づく期待値
代わりにDataGridView.CellValueChangedイベント。そのイベント
ユーザー指定の値がコミットされた場合にのみ発生します。
通常、フォーカスがセルを離れるときに発生します。
DataGridView.CurrentCellDirtyStateChangedイベント。そのハンドラでは、if
現在のセルがチェックボックスセルである場合は、DataGridView.CommitEdit
メソッドを呼び出し、Commit値を渡します。
CellClick型のイベントを使用しないことをお勧めします(セルから離れるまで値をプッシュしないため)。代わりにCurrentCellDirtyStateChangedとCommitEditメソッドを使用します。
だからあなたは次のようになります:
dataGridView1.CurrentCellDirtyStateChanged += new EventHandler(dataGridView1_CurrentCellDirtyStateChanged);
dataGridView1.CellValueChanged += new DataGridViewCellEventHandler(dataGridView1_CellValueChanged);
void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (dataGridView1.Columns[e.ColumnIndex].Name == "CB")
{
MessageBox.Show(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString());
}
}
void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
チェックされた値を取得するために、これはDataGridViewCheckBoxCellのValueプロパティにすぎません。
だからあなたが行くなら:
dataGridView1.Rows[rowindex].Cells[cellindex].Value
(変更がコミットされた後に)チェックボックスに対応するブール値を取得します。