- すべてのイベントハンドラを一括で登録、削除する関数を作成する
- すべてのイベントハンドラの最初で削除し、最後に再登録する
- イベントの多重起動(Leaveイベント内で別ControlのFocusを実行して再度Leaveが実行される、等)を防ぐにはこれが確実
- 関数のreturn部分が複数あって複雑な場合は、try-finallyのfinally内で再登録する
- イベントハンドラから呼び出す関数内で削除,登録処理を行うと、その関数の呼ばれ方によって再登録が多重に行われてしまう可能性がある。関数を使う場合もイベントハンドラの中で直接一括削除、再登録を行う
- 複数のイベントハンドラが同じ処理をする場合でも、別のイベントハンドラを直接呼び出す実装をすると上記を満たさず破綻する。共通部分を別関数に切り出して使用する。