2009-09-21 9 views
20

मेरे पास एक सामान्य विचार है, और कुछ स्पष्ट मामले हैं, लेकिन मेरे लिए कुछ भूरे रंग के क्षेत्र भी हैं - किसी घटक से विस्तार करने के लिए सबसे अच्छा उपयोग कब होता है और उपयोगकर्ता नियंत्रण बनाने के लिए सबसे अच्छा कब होता है? यह एक विशिष्ट कार्य समस्या से संबंधित है जिसे मैं हल करने की कोशिश कर रहा हूं, लेकिन इसके विनिर्देश महत्वपूर्ण नहीं हैं - इस प्रश्न का सामान्य उत्तर मेरे लिए पर्याप्त है।उपयोगकर्ता नियंत्रण बनाम एक घटक वर्ग को कब जोड़ना है?

उत्तर

16

डब्ल्यूपीएफ और विंडोज फॉर्म में, दोनों मुख्य अंतर यह है कि उपयोगकर्ता नियंत्रण नियंत्रण का संग्रह होता है - एक पुन: प्रयोज्य, एकल ऑब्जेक्ट "कई" नियंत्रण से बना है।

यदि आप छोटे नियंत्रण से बना "नियंत्रण" बनाने के बजाय, नए व्यवहार के साथ एक एकल, आदिम नियंत्रण बना रहे हैं, तो आप उपयोगकर्ता नियंत्रण के बजाय एक घटक/कस्टम नियंत्रण/नियंत्रण को लागू नहीं करेंगे। घटक आमतौर पर एक गैर-दृश्य व्यवहार होता है, जहां एक कस्टम नियंत्रण/नियंत्रण आमतौर पर दृश्य नियंत्रण के लिए होता है।

5

सामान्य रूप से, मैं Component का उपयोग करता हूं जब नियंत्रण में कोई उपयोगकर्ता इंटरफ़ेस नहीं होता है (या कम से कम कोई भी फॉर्म पर मौजूद नहीं है)। यदि यह यूआई नियंत्रण है तो मैं इसके बजाय User Control बनाउंगा।

4

मैं आमतौर पर नियंत्रण, या अधिक उपयोगकर्ता नियंत्रक का विस्तार करता हूं, केवल तभी जब मैं कुछ UI कार्यक्षमता को पैकेज करना चाहता हूं। घटक के लिए, मैं क्लासिक उदाहरण, टाइमर के बारे में सोचता हूं। इसे प्रॉपर्टी फलक के माध्यम से कॉन्फ़िगर किए गए डिज़ाइनर पर छोड़ दिया जा सकता है, और उसके बाद कोड के माध्यम से प्रोग्रामेटिक रूप से एक्सेस किया जा सकता है। संक्षेप में, मैं घटक का विस्तार करता हूं जब मैं कुछ बंडल-अप राज्य और व्यवहार, डिजाइनर के माध्यम से कोई यूआई वाला ऑब्जेक्ट करने में सक्षम होना चाहता हूं।

12

घटक और नियंत्रण के बीच एक महत्वपूर्ण अंतर है: नियंत्रण में उपयोगकर्ता इंटरफ़ेस होता है। सभी नियंत्रण भी घटक हैं, लेकिन सभी घटक नियंत्रण नहीं हैं। यदि आपको किसी उपयोगकर्ता इंटरफ़ेस को प्रदर्शित करने की आवश्यकता है, तो किसी प्रकार के नियंत्रण आधार (नियंत्रण, उपयोगकर्ता नियंत्रण, फ़ॉर्म, आदि) से प्राप्त होने पर आमतौर पर आवश्यकता होगी। यदि आपके पास अभी व्यवहार है, जैसे कि पृष्ठभूमिवर्कर घटक के साथ, तो आपको केवल घटक से सीधे प्राप्त करने की आवश्यकता होगी।

एक और नोट ... दोनों घटक और नियंत्रण एक डिजाइन सतह पर गिराए जा सकते हैं। घटक एक आइकन और एक विशेष क्षेत्र में एक लेबल के रूप में दिखाई देते हैं, नियंत्रण सीधे डिजाइन सतह पर दिखाई देते हैं। हालांकि, एक तीसरी चीज है जिसका आप उपयोग कर सकते हैं: एक साधारण वर्ग। यदि आपको डिज़ाइन सतह समर्थन की आवश्यकता नहीं है, तो मैं घटक या नियंत्रण के बजाय एक साधारण वर्ग का उपयोग करने की सलाह दूंगा। वे वजन में हल्के होते हैं और कम फूला हुआ होता है जब आपको केवल 100% शुद्ध व्यवहार की आवश्यकता होती है, जिसमें कोई डिज़ाइन-टाइम समर्थन नहीं होता है।

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