DataGridViewではまるところ
DataGridViewでチェックボックスを配置していた場合、
チェックした瞬間にステータスを取りたい時がある。
その場合、デフォルトのValueChangedイベントだけじゃとれない。
MSDNによれば、
CurrentCellDirtyStateChanged イベントを処理する方法を次のコード例に示します。
この例では、イベント ハンドラは CommitEdit メソッドを呼び出して CellValueChanged イベントを発生させ、
DataGridViewCheckBoxCell の現在の値を決定します。
次のコード例は、「方法 : Windows フォーム DataGridView コントロールのボタン列にあるボタンを無効にする」で示されている例の一部です。
// This event handler manually raises the CellValueChanged event // by calling the CommitEdit method. void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e) { if (dataGridView1.IsCurrentCellDirty) { dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit); } }
チェックボックスをクリックした瞬間では、そのステータスがコミット完了状態ではなく、
CurrentCellDirtyStateChangedを利用して、
コミットされていないものがあれば、自分でコミットしてあげて、
CellValueChangedを発生させる必要があるみたい。