.NET では、プロパティを使用してイベントを使用し、イベントのキャンセルを許可するパターンがよくあります。たとえば、ここに例があります
private void OtherInitialize() {
this.Closing += new CancelEventHandler(this.Form1_Closing);
}
private void Form1_Closing(Object sender, CancelEventArgs e) {
if (!isDataSaved) {
e.Cancel = true;
MessageBox.Show("You must save first.");
}
else {
e.Cancel = false;
MessageBox.Show("Goodbye.");
}
}
このパターンの名前、またはこのパターンの実装方法を (ビューの観点から) 説明する記事はありますか? 私が想像できるのは、このようなものです
CancelEventArgs args = new CancelEventArgs();
if(Closing != null)
Closing(this, args);
if(!args.Cancel)
DoActualClosing();
しかし、これが簡単かどうかはわかりません。複数のイベント ハンドラーがある場合、args.Cancel の最終的な値を決定するのはどのハンドラーでしょうか? ハンドラーの一部 (またはすべて) が例外をスローした場合はどうなりますか?