コントロールのTextBox列で、ユーザーが通常編集モードを終了するたびに(ユーザーが実際に値を変更したかどうかに関係なく、ユーザーがESCを押して編集モードをキャンセルした場合はそうではありません)、タスクを実行する必要がありますDataGridView。
コントロール自体と編集コントロールのいくつかのイベントを試しましDataGridViewたが、どれも私が望むことを正確に実行しません。
DataGridView.CellValidatingおよびDataGridView.CellValidated:
これらのイベントは、セルが編集モードでなかった場合でも、ユーザーが別のセルを選択するたびに発生します。イベントIsCurrentCellDirty内の物件を確認してみました。CellValidatingこれはほとんど私が必要としているものですがIsCurrentCellDirty、ユーザーが実際に値を変更したときにのみ設定されます。ただし、ユーザーが通常何も変更せずに編集モードを終了したときにも、タスクを実行する必要があります。これらのイベントは、ユーザーが編集モードをキャンセルしても発生しません。これは良いことです。
DataGridView.CellValueChanged
このイベントも頻繁に発生します(セルの値がプログラムで設定されている場合にも発生します)。
DataGridView.CellEndEdit
このイベントはほとんど私が望んでいるものです。ただし、ユーザーがESCを押して編集モードをキャンセルした場合にも発生します。CellEndEditイベント内で編集モードがキャンセルされたかどうかを確認する方法はありますか?
DataGridView.CellParsing
このイベントはほとんど私が望んでいるものです。ただし、ユーザーが何も変更せずに編集モードを終了しても起動されません。
ValidatingおよびValidated編集コントロールのイベント
イベント内でこれらのイベントに登録しDataGridView.EditingControlShowingました。それらは私が望むことをほぼ実行しますが、ユーザーがESCを押して編集モードをキャンセルしたときにも起動されます。これらのイベント内で編集モードがキャンセルされたかどうかを確認する方法はありますか?
登録できるイベントや、目的の動作を実現するために確認できるフラグに関するその他の提案はありますか?