DataGridViewは、
チェックボックスやテキストボックスの内容を変更しても
フォーカスが変わらないと内部の変数に反映されません。
(CellValueChangedが発生しない)
DataGridViewのCurrentCellDirtyStateChangedイベントで
CommitEditを行うことにより、
チェックボックスやテキストボックスの内容が変わるとすぐに反映されるようになります。(CellValueChangedが呼び出される)
private void dataGridView1_CurrentCellChanged(object sender, EventArgs e)
{
var dgv = (DataGridView)sender;
if(dgv.IsCurrentCellDirty)
{
dgv.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
}
private: System::Void dataGridView1_CurrentCellDirtyStateChanged(System::Object^ sender, System::EventArgs^ e)
{
auto dgv = (DataGridView^)sender;
if ( dgv->IsCurrentCellDirty){
dgv->CommitEdit(DataGridViewDataErrorContexts::Commit);
}
}