2011-05-10 14 views
5

मैं प्रयोगशाला पर प्रतिक्रियाशील विस्तार हाथों के साथ खेलने की कोशिश कर रहा हूं लेकिन FromEvent API (मुझे संकलन समय अपवाद मिल रहा है) का उपयोग करके पंजीकरण नहीं कर सका। मैं टेक्स्ट बॉक्स नियंत्रण पर टेक्स्टchanged संपत्ति लागू होने पर ईवेंट प्राप्त करना चाहता हूं, क्या कोई सुझाव दे सकता है कि मैं FromEvent API के माध्यम से रूपांतरण पर क्या गलत कर रहा हूं? मैं कुछ कैसे TextChangeEventArgs/EventHandler से EventHandler में कास्ट या कन्वर्ट नहीं कर सकता - कृपया मुझे ऐसा करने का सही तरीका दिखाएं। धन्यवाद।प्रतिक्रियाशील विस्तार - पर्यवेक्षण। फ्रॉमवेन्ट टाइपकास्ट रूपांतरण

 internal delegate void TextChangedEventArgs(object sender, EventArgs e); 
     var txt = new TextBox(); 

     var form = new Form 
         { 
          Controls = { txt } 
         }; 


     var subscription = Observable.FromEvent<EventHandler, TextChangedEventArgs>(
      x => (a, b) => new EventHandler(), ?????? 
      x => txt.TextChanged += x, 
      x => txt.TextChanged -= x 
      ); 

     IDisposable eventSubscription = subscription.Subscribe(
      x => Console.WriteLine("Subscriber Got " + x), 
      x => Console.WriteLine("An exception has occured" + x), 
      () => Console.WriteLine("Action completed")); 

     Console.WriteLine("in here"); 
     using (new CompositeDisposable(eventSubscription)) { Application.Run(form); } 

     Console.ReadKey(); 

उत्तर

11

इस प्रयास करें:

var subscription = Observable.FromEventPattern<TextChangedEventArgs>(txt, "TextChanged"); 
+0

पर किया गया था, मैंने एमएसडीएन में अपना समाधान 'माइक्रोसॉफ्ट.फोन.रेक्टिव' नामस्थान में पाया। आरएक्स-टीम, अपने एपीआई में अक्सर ऐसी चीजें बदलती प्रतीत होती है। आपके संकेत के लिए धन्यवाद। – Nappy

3

प्रयास करें:

var subscription = Observable.FromEvent(h => txt.TextChanged += h, 
             h => txt.TextChanged -= h); 
+0

मैं कंसोल आधारित एप्लिकेशन का उपयोग कर रहा हूं और विंडोज़.फॉर्म डीएल/नेमस्पेस का उपयोग कर रहा हूं, टेक्स्ट चेंजएडवेंटहैंडलर एक डब्ल्यूपीएफ प्रेजेंटेशन प्रतिनिधि है, क्या मैं Winform के साथ ऐसा कर सकता हूं? –

+0

@ रोहित शर्मा - एक विनफॉर्म के लिए मेरा संशोधित उदाहरण देखें टेक्स्टबॉक्स –

+2

धन्यवाद जेम्स - मैंने पहले यह कोशिश की लेकिन मुझे संकलन समय त्रुटि मिलती है "सिस्टम सिस्टम में प्रवेश नहीं कर सकता। सिस्टम के लिए कार्रवाई। EventHandler" –

0

इस (संपादित: यदि आप Windows Phone Reactive API लक्षित कर रहे हैं): प्रयास करें

var subscription = Observable.FromEvent<TextChangedEventArgs>(txt, "TextChanged"); 
+1

मुझे नवीनतम आरएक्स लाइब्रेरी में यह अधिभार नहीं दिखाई देता है, मैंने पिछले शुक्रवार को डाउनलोड किया था –

+3

इसका नाम बदलकर FromEventPattern – Schneider

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