उपयोगकर्ता नियंत्रण, कस्टम नियंत्रण और घटक के बीच क्या अंतर है?


82

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

जवाबों:


163

उपयोगकर्ता नियंत्रण, कस्टम नियंत्रण और घटक के बीच मुख्य अंतर यह है कि उन्हें विरासत के पेड़ में विभिन्न स्तरों से विरासत में मिला है:

MyComponent
   |-> Component

MyCustomControl
   |-> Control
          |-> Component

MyUserControl
   |-> ContainerControl
          |-> ScrollableControl
                 |-> Control
                        |-> Component

तो, संक्षेप में आपको विभिन्न विकल्पों के साथ पूर्व-वायर्ड कार्यक्षमता की एक अलग राशि मिलती है।

आप विभिन्न विकल्पों का उपयोग कब करेंगे? (ये विचार और राय हैं, सत्य नहीं)

  • यदि आप UI के बिना कार्यक्षमता प्रदान करना चाहते हैं तो एक घटक बनाएं (जैसे कि टाइमर घटक, डेटा स्रोत, ...)
  • यदि आप एक घटक बनाना चाहते हैं, तो एक कस्टम नियंत्रण बनाएँ, जहाँ आपका दृश्य उपस्थिति पर पूर्ण नियंत्रण हो , और आप अनावश्यक कार्यक्षमता का कोई सामान नहीं चाहते हैं। विशिष्ट मामले सीमित कार्यक्षमता के साथ सरल नियंत्रण होंगे (जैसे कि बटन)
  • यदि आप पुन: प्रयोज्य बिल्डिंग ब्लॉक्स में मौजूदा नियंत्रणों को संयोजित करने जा रहे हैं (जैसे कि आप सूचियों के बीच आइटमों को स्थानांतरित कर सकते हैं, तो एक उपयोगकर्ता नियंत्रण बनाएँ )।

16
हाँ, मुझे यह पता लगाने में थोड़ा समय लगा, लेकिन ऐसा लगता है कि UserControlयह वास्तव में एक "समग्र" नियंत्रण (अन्य नियंत्रणों से बना एक नियंत्रण) है, जबकि एक कस्टम नियंत्रण वास्तव में उपयोगकर्ता द्वारा डिज़ाइन किया गया नियंत्रण है।
डेव कजिनो

यदि कस्टम-और गतिशील रूप से खींचे गए ग्राफिक्स के साथ कई टेक्स्टबॉक्स से युक्त एक नियंत्रण बनाना चाहते हैं, तो क्या मुझे चुनना चाहिए UserControl?
निक अलेक्सीव

@NickAlexeev मैंने कुछ साल पहले से विंडफॉर्म की दुनिया में ज्यादा काम नहीं किया है, लेकिन मेरा मानना ​​है कि यह जाने का रास्ता होगा, हां।
फ्रेड्रिक मोर्क

2
@ FredrikMörk अच्छा जवाब! क्या आप संभवतः एक साइट का सुझाव दे सकते हैं जहां हम सीख सकते हैं कि कस्टम नियंत्रण कैसे बनाया जाए?
जॉन ओडम

1
Youtube पर @John Odom AngelSix सीरीज़ साथ जाने वाली है। मैंने जाँच की और मुझे पता है कि यह वीडियो 9 में है और विशिष्ट होने के लिए उन्होंने इसे 26:00 बजे इस्तेमाल किया
मौर_का

2

फ्रेड्रिक ने जो कहा, उसे जोड़ते हुए, आम तौर पर घटकों और कस्टम नियंत्रणों का उपयोग तब किया जाता है जब आप उन्हें परियोजनाओं में पुन: उपयोग करने की योजना बनाते हैं। उपयोगकर्ता नियंत्रण का उपयोग तब करें जब आप केवल एक परियोजना में इसका उपयोग कर रहे हों।


10
ऐसा क्यों? एक परियोजना में एक उपयोगकर्ता नियंत्रण का उपयोग करने के लिए एक लाभ, इसका एक सीमा कई परियोजनाओं में इस्तेमाल किया जा सकता है ...?
कैमिलो मार्टिन

1

मेरा मानना ​​है कि अंतिम कथन मेरी राय में सही नहीं है। मैं कई अलग-अलग कारणों से उपयोगकर्ता नियंत्रण बनाता हूं।

मुख्य कारण यह है कि अगर मैं कहूं तो मैं एक साथ समूहीकृत कई नियंत्रणों का एक इंटरफ़ेस डिज़ाइन करता हूं।

मैं पहले एक क्लास लाइब्रेरी बनाता हूं, फिर मैं इसमें उपयोगकर्ता नियंत्रण जोड़ता हूं। अब अगर मुझे तर्क के किसी भी हिस्से को बदलने की आवश्यकता है तो उपयोगकर्ता नियंत्रण कैसे काम करता है मैं बहुत आसानी से कर सकता हूं। साथ ही इस क्लास लाइब्रेरी को कई बार इस्तेमाल किया जा सकता है।

इसके अलावा एक ही उत्तम दर्जे की लाइब्रेरी में मेरे पास कई कक्षाएं हो सकती हैं जिन्हें मेरे किसी भी उपयोगकर्ता नियंत्रण के लिए साझा और उपयोग किया जा सकता है।

यह मुख्य कारण है जो मैं उपयोगकर्ता नियंत्रण का उपयोग करता हूं। और अगर आप अपने यूजर कंट्रोल या क्लास लाइब्रेरी में बदलाव करते हैं। एक बार जब आप काम का निर्माण dll बिन फ़ोल्डर में गतिशील रूप से अद्यतित रहेगा।

इसलिए यदि मैं इसे किसी अन्य परियोजना में संदर्भित कर रहा हूं तो वे परिवर्तन भी नई परियोजना में दिखाई देंगे।

इसके अलावा यह फॉर्म के रूप में एक ही पेंट रूट का उपयोग नहीं करता है और आपके द्वारा फॉर्म पर कुछ भी लोड किया गया है।

इसलिए उपयोगकर्ता नियंत्रण हमें बहुत मॉड्यूलर होने की क्षमता देता है और मैं कई उपयोगकर्ता नियंत्रण हो सकता है जो कक्षा पुस्तकालय की मूल बातें साझा करता है ... इसलिए एक उपयोगकर्ता नियंत्रण उद्देश्य सिर्फ एक परियोजना के लिए नहीं है। उस संबंध में इसकी कोई सीमा नहीं है। जेफ


पुन "मुझे विश्वास है कि पिछले बयान मेरी राय में सही नहीं है" - के अंतिम बयान क्या ? [और अपने उत्तर में कथन को उद्धृत करना सबसे अच्छा होगा, इसलिए पाठकों को तुरंत पता चल जाता है कि आप क्या जिक्र कर रहे हैं।]
टूलमेकर १aker'१

-5

उनके बीच मुख्य अंतर- उपयोगकर्ता नियंत्रण विस्तार के साथ एक पृष्ठ फ़ाइल है। इसका उपयोग केवल एक अनुप्रयोग या परियोजना के भीतर किया जा सकता है लेकिन कस्टम नियंत्रण असेंबली (dll फ़ाइलें) हैं जिनका उपयोग कई अनुप्रयोगों में किया जा सकता है।


7
सवाल WinForms के बारे में था, ASP.NET का नहीं।
क्वर्टी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.