2010-09-20 9 views
6

संभव डुप्लिकेट:
How do I Unregister 'anonymous' event handlerअज्ञात घटना को डिस्कनेक्ट कैसे करें?

मैं इस तरह कोड है:

 Binding bndTitle = this.DataBindings.Add("Text", obj, "Title"); 
     bndTitle.Format += (sender, e) => 
     { 
      e.Value = "asdf" + e.Value; 
     }; 

कैसे मैं अब स्वरूप घटना डिस्कनेक्ट करते हैं?

उत्तर

3

दुर्भाग्य से आप ऐसा नहीं कर सकते हैं। यदि आप एक ही दायरे में घटना को दूर आप एक स्थानीय लैम्ब्डा धारण करने के लिए बना सकते हैं:

Binding bndTitle = this.DataBindings.Add("Text", obj, "Title"); 
EventHandler handler = (sender, e) => 
{ 
    e.Value = "asdf" + e.Value; 
}; 

bndTitle.Format += handler; 
// ... 
bndTitle.Format -= handler; 
+0

आप "एक परोक्ष टाइप स्थानीय चर को लैम्ब्डा अभिव्यक्ति आवंटित नहीं कर सकते" कर सकते हैं। इसे ConvertEventHandler हैंडलर = (प्रेषक, ई) => { ई। वैल्यू = "asdf" + e.Value; }; –

+0

और चूंकि आपको इसे एक प्रकार असाइन करना है, इसलिए यह अनाम नहीं हो सकता है। –

+0

@ रिचर्ड हेन आप गलत हैं, विधि अज्ञात हो सकती है लेकिन एक प्रकार है (प्रतिनिधि को परिवर्तित किया जा सकता है)। विधि (लैम्बडा) का बेनामी का अर्थ है कि इसे नाम से नहीं बदला जा सकता है। – Andrey

संबंधित मुद्दे