情報アイランド

「情報を制する者は世界を制す」をモットーに様々な情報を提供することを目指すブログです。現在はプログラミング関連情報が多めですが、投資関連情報も取り扱っていきたいです。

C#でイベントハンドラの解除

C#を使い始めてからもう5年近くにもなるのに、意外と知らないことがあったりするものです。

button.Click -= new RoutedEventHandler(button_Click);

このようにしてイベントハンドラの解除ができるのですね。解除の構文でインスタンス化するというのは普通の感覚で分かるものではないと思います。

今まで私は下のような冗長なコードを書いていました。実際辞書のキーにint型を使うことは少なかったですが。

Dictionary<int, RoutedEventHandler> eventHandlers = new Dictionary<int, RoutedEventHandler>();

RoutedEventHandler eventHandler = (sender, e) =>
{
    MessageBox.Show("eventHandler");
};

eventHandlers.Add(1, eventHandler);
button.Click += eventHandlers[1];

……

button.Click -= eventHandlers[1];
eventHandlers.Remove(1);
pizyumi
プログラミング歴19年のベテランプログラマー。業務システム全般何でも作れます。現在はWeb系の技術を勉強中。
スポンサーリンク

-C#