今日は、AddHandlerRemoveHandlerについて書きます。


前回書いた、Handlesキーワードはイベントを

処理するための簡単な方法だと思います。


でも、Handlesキーワードのみだとちょっと問題があります。


それは、


ある条件のときはイベントをうけとりたくない


という場合がでてくるからです。


回避方法としては、イベントをハンドルしているメソッドの頭に

その条件の場合はメソッドをぬける処理を記述をすれば

できます。

が、もっとスマートにしたいですよね(おれだけ?)


そこで、AddHandlerRemoveHandlerが出てくるわけです。


このAddHandlerRemoveHandlerというのはとても便利で

オブジェクトのイベントハンドリングを有効にしたり、

無効にしたりすることができます。


使い方は簡単。


'イベントハンドル無効化

RemoveHandler イベント名, AddressOf ハンドルを無効にするメソッド名

'イベントハンドル有効化

AddHandler イベント名, AddressOf ハンドルを有効にするメソッド名


こんな感じで使えます。


ここで、ひとつ注意点があります。


AddHandlerはAddHandlerを行った回数分

イベント処理が実行される


ので、要注意です。

誤って何度もAddHandlerをしてしまうと

予期せぬ処理をしてしまいます。

(昔、それで俺はハマりました。。)


ちなみにRemoveHandlerは何度やっても大丈夫です。


なので、自分がAddHandlerを使う場合は

AddHandlerする前に一度RemoveHandlerを

するようにしています。


この使い方を覚えると、Handlesよりこっちのほうが

とても使いやすいと感じると思います。