संभव डुप्लिकेट: How would that be possible to remove all event handlers of the Click event of a Button?सभी क्लिक ईवेंट हैंडलर को कैसे हटाएं?
मैं एक बटन से सभी क्लिक करें घटना संचालकों निकालना चाहते हैं। मुझे इस विधि को स्टैक ओवरफ़्लो प्रश्न 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]);
}
लेकिन इस लाइन हमेशा रिटर्न अशक्त:
typeof(Control).GetField("EventClick", BindingFlags.Static | BindingFlags.NonPublic);
और इस विधि 2006
में लिखा गया था कि इस विधि के किसी भी नवीनतम संस्करण है?
नोट: मैं WPF और .NET 4.0 के साथ काम कर रहा हूं।
मैं कर सकते हैं यह बहुत मदद नहीं कर रहा है कि वह वापस क्यों लौट रहा है, लेकिन @ जोनस्केट के पास http://stackoverflow.com/questions/6828054/how-would-that-be-possible-to-remove-all-event-handlers पर एक बहुत अच्छा जवाब है -फ-द-क्लिक-इवेंट-ऑन-ऑन क्यों प्रतिबिंब के बिना यह संभव नहीं है। शायद आपको समस्या से अलग-अलग संपर्क करने की आवश्यकता है। –
आप जिस मौलिक समस्या को हल करने की कोशिश कर रहे हैं/लक्ष्य को पूरा करने का प्रयास कर रहे हैं? – RQDQ
आपको एहसास है कि आप WinForms कोड को WPF पर लागू करने का प्रयास कर रहे हैं? – Douglas