可能性の重複: How would that be possible to remove all event handlers of the Click event of a Button?すべてのClickイベントハンドラを削除するには?
私はボタンからすべてのクリックイベントハンドラを削除します。スタックオーバーフローの質問How to remove all event handlers from a controlでこのメソッドが見つかりました。
private void RemoveClickEvent(Button b)
{
FieldInfo f1 = typeof(Control).GetField("EventClick",
BindingFlags.Static |
BindingFlags.NonPublic);
object obj = f1.GetValue(b);
PropertyInfo pi = b.GetType().GetProperty("Events",
BindingFlags.NonPublic |
BindingFlags.Instance);
EventHandlerList list = (EventHandlerList)pi.GetValue(b, null);
list.RemoveHandler(obj, list[obj]);
}
しかし、この行は常にnullを返します:
typeof(Control).GetField("EventClick", BindingFlags.Static | BindingFlags.NonPublic);
をそして、この方法は、2006年
に書かれたこの方法のいずれかの最新バージョンはありますか?
私ができますなぜそれがnullを返すのかを大いに助けますが、@ JonSkeetはかなり良い答えをhttp://stackoverflow.com/questions/6828054/how-would-that-be-possible-to-remove-all-event-handlersに持っていますそれが反射なしでは不可能である理由についてのクリックイベント - of-a-of-the-click。おそらく、あなたは問題に異なってアプローチする必要があります。 –
達成しようとしている基本的な問題は何ですか? – RQDQ
WPFにWinFormsコードを適用しようとしていることに気が付きましたか? – Douglas