मेरे पास एक एप्लिकेशन में एकाधिक परतें हैं और मुझे स्टेटस बार में परिवर्तन करने के लिए जीयूआई परत पर ईवेंट को बबल करना पड़ता है। । मुझे अपने आप को बार-बार कोडित लिखना पड़ता है जहां प्रत्येक परत बस निचले स्तर से घटनाओं की सदस्यता लेती है और फिर कॉल में वापस श्रृंखला को एक ईवेंट बढ़ाती है। क्या ऐसा करने का एक और अधिक प्रभावी तरीका है?घटनाओं को बुलबुला करना।
उत्तर
यदि सब आप कर रहे हैं एक और ईवेंट हैंडलर से एक ईवेंट हैंडलर फायरिंग कर रहा है, आप बीच आदमी बाहर काट और ऐड में सीधे ईवेंट हैंडलर्स हुक कर सकते हैं/घटना के लिए ब्लॉकों को हटा दें।
उदाहरण के लिए, यदि आप एक "SaveButtonClick" घटना के साथ एक UserControl है, और तुम सब जब करना चाहते हैं, ईवेंट हैंडलर फोन जब अपने UserControl पर "SaveButton" क्लिक किया जाता है है आप यह कर सकते हैं:
public event EventHandler SaveButtonClick
{
add { this.SaveButton.Click += value; }
remove { this.SaveButton.Click -= value; }
}
अब आप SaveButtonClick ईवेंट को सक्रिय करने के लिए कोई कोड की जरूरत नहीं है - जब SaveButton.Click घटना उठाया है यह स्वचालित रूप से सक्रिय किए जाएंगे (यानी जब कोई व्यक्ति उस बटन पर क्लिक करता)।
आपके पास एक केंद्रीय चैनल हो सकता है जो केवल ईवेंट का समर्थन करता हो। यह चैनल स्वतंत्र होना चाहिए ताकि परत केवल प्रकाशित या सब्सक्राइब हो।
यह दिलचस्प लगता है, लेकिन व्याख्या बहुत अस्पष्ट है। क्या आप कुछ उदाहरण दे सकते हैं? – spoulson
जब तक मैं कुछ और डिज़ाइन नहीं देखता .. एक अच्छा जवाब देना मुश्किल होगा।
WPF बुलबुला घटनाओं अप करता है (स्वतः) यूआई घटक/नियंत्रण पेड़ ... यह अब ढांचे में बनाया गया है। तो मुझे लगता है कि है कि सिफारिश की जिस तरह से :)
बीच आदमी Layer2 है Layer1 और layer3 अब एक दूसरे को जानते हैं कि दरकिनार के साथ परेशानी ... मिलकर कर रहे हैं। तो यह एक व्यापार है .. यदि आप युग्मन के साथ ठीक हैं .. मध्य व्यक्ति को खत्म करें/इस जिम्मेदारी के साथ एक विशेष घटक का आविष्कार करें। हालांकि यदि आप परत 3 को गर्म-स्वीकार्य (कम युग्मन) होने की अपेक्षा करते हैं, तो मैं कहूंगा कि बुलबुला जारी रखें।
Update Controls .NET पर एक नजर डालें। ये नियंत्रण आपके डेटा मॉडल के कुछ हिस्सों को खोजते हैं जो वे व्यापार तर्क की परतों के माध्यम से भी निर्भर करते हैं। आपको लिखने के लिए कोड लिखने की आवश्यकता नहीं है।
जेरेमी मिलर के ब्लॉग "द शेड ट्री डेवलपर", विशेष रूप से उनके Write Your Own CAB series का एक पठन है - वह कमांड पैटर्न सामग्री जो उसके बारे में बात करता है वह शायद आपको चाहिए।
पीटर rilling WinForms में घटना बुदबुदाती/प्रसारण का अनुकरण करने का एक तरीका पोस्ट किया गया है। यह सरल और प्रभावी है।
- 1. घटनाओं को बुलबुला करने का पसंदीदा तरीका क्या है?
- 2. बुलबुला अवधारणा क्या है?
- 3. छवि लोड घटनाओं के लिए बुलबुला उपलब्ध है?
- 4. घटनाओं को क्रमबद्ध करना
- 5. डी 3 बुलबुला चार्ट
- 6. क्या स्टैक के शीर्ष पर अपवाद बुलबुला करना ठीक है?
- 7. ऑब्जेक्ट प्रारंभकर्ता में घटनाओं को असाइन करना
- 8. डब्ल्यूपीएफ घटनाओं को डिबग करना, बाइंडिंग
- 9. कतारबद्ध माउस घटनाओं को अनदेखा करना
- 10. डी 3 में बुलबुला पेड़?
- 11. कैप्चर LinearLayout onClick घटनाओं
- 12. "घटनाओं"
- 13. कनवर्ट करना जीडब्ल्यूटी घटनाओं को स्पर्श करने के लिए घटनाओं पर क्लिक करें
- 14. घटनाओं को पेरेंट व्यू (टाइटेनियम स्टूडियो, आईफोन) में स्थानांतरित करना
- 15. एक कन्स्ट्रक्टर के अंदर घटनाओं को पंजीकृत करना?
- 16. क्या इंटेलिट्रेस घटनाओं को विस्तारित करना संभव है?
- 17. मालिकाना वर्ग के बाहर से सी # घटनाओं को कॉल करना?
- 18. जेएसओपी जावा एचटीएमएल पार्सर: जावास्क्रिप्ट घटनाओं को निष्पादित करना
- 19. घटनाओं के साथ डेटा पास करना
- 20. एकाधिक घटनाओं पर प्रतीक्षा करना C++
- 21. आरएक्स - घटनाओं से सदस्यता रद्द करना
- 22. .NET प्रतिनिधियों, घटनाओं, और घटनाओं को समझने में सहायता
- 23. सी # में कर्सर को अपहृत किए बिना माउस/स्टाइलस घटनाओं को क्लोन करना और संशोधित करना?
- 24. जावास्क्रिप्ट आंतरिक: घटनाओं को कैसे लागू किया जाता है?
- 25. घटनाओं को अतुल्यकालिक रूप से
- 26. गिनती घटनाओं
- 27. डब्ल्यूपीएफ: रूटेड घटनाओं या नियमित घटनाओं?
- 28. बुलबुला-छँटाई एफ # में की सबसे खूबसूरत तरीका क्या है?
- 29. राफेल जेएस: घटनाओं को कैसे हटाया जाए?
- 30. जीसी घटनाओं को शुरू और बंद करें
यह दिलचस्प लगता है। कार्यान्वयन को देखना अच्छा लगेगा। –
@ मैक्सिम - मैंने जो कोड पोस्ट किया है * है * कार्यान्वयन। यदि आपके पास SaveButton नामक बटन के साथ UserControl है और आप उस यूसी को किसी फॉर्म पर छोड़ देते हैं, तो आप फॉर्म से SaveButtonClick पर सब्सक्राइब कर सकते हैं, और जब भी बटन क्लिक किया जाता है तो आपके ईवेंट हैंडलर को कॉल किया जाएगा। –
मुझे विचार और आसान कार्यान्वयन पसंद है। लेकिन मुझे उपयोगकर्ता नियंत्रण और ग्राहक –