(C# で) パラメーターをイベント ハンドラーに渡してから、イベント ハンドラーをデタッチできるようにする必要があります。
イベント ハンドラーをアタッチし、パラメーターを渡します。
_map.MouseLeftButtonUp += (sender, e) => _map_MouseLeftButtonUp2(sender, e, showResultsWindow);
イベントは期待どおりに呼び出されます。イベント ハンドラーをデタッチしようとしています。
_map.MouseLeftButtonUp -= (sender, e) => _map_MouseLeftButtonUp2(sender, e, showResultsWindow);
コードはエラーなしで実行されますが、デタッチされていないようです。
イベント ハンドラーを従来の方法で (パラメーターを渡さずに) アタッチすると、次のようになります。
_map.MouseLeftButtonUp+=_map_MouseLeftButtonUp;
そしてデタッチ
_map.MouseLeftButtonUp -= _map_MouseLeftButtonUp;
すべてが期待どおりに機能します
より従来の方法でイベント ハンドラー (パラメーターを受け取る) を切り離す
_map.MouseLeftButtonUp -= _map_MouseLeftButtonUp2;
デリゲートが一致しないというエラーが表示されます(これは理にかなっています)
したがって、私の質問は次のとおりです。パラメーターを渡すときにイベントハンドラーが実際に切り離されていないのはなぜですか?この問題を回避する方法はありますか?