ユーザーが DatagridView セルに無効な値を入力したときに、_CellValidating イベントで「e.Cancel = true」を設定しています。
e.Cancel は、ユーザーがフォームを閉じたり X ボタンを押したりすることもできないようです。どうすれば例外を追加できますか? (e.Cancel が true に設定されていても、ユーザーがフォームを閉じることを許可します)
ユーザーが DatagridView セルに無効な値を入力したときに、_CellValidating イベントで「e.Cancel = true」を設定しています。
e.Cancel は、ユーザーがフォームを閉じたり X ボタンを押したりすることもできないようです。どうすれば例外を追加できますか? (e.Cancel が true に設定されていても、ユーザーがフォームを閉じることを許可します)
このシナリオに基づいてテスト プロジェクトを作成したところ、DataGridView
のイベントがのイベントのCellValidating
前に呼び出されるようです。これは、セルが検証される時点で、ユーザーがフォームを閉じようとしたかどうかを知る方法がないことを意味します。Form
Closing
厳密に言えば、イベントの正しい順序は、フォームを閉じる前に、ユーザーがセルに有効なデータを入力する (またはエスケープ キーを押して編集をキャンセルする) ことです。ただし、関係なくフォームを閉じることを許可する場合Closing
は、フォームのイベントを処理できます。
protected override void OnClosing(CancelEventArgs e) {
e.Cancel = false;
base.OnClosing(e);
}
これは悪い習慣ですが、要求した動作が得られます。