कैसे Visual Studio उपकरण बॉक्स में एक UserControl डाल करने के लिए


93

मैंने अपने प्रोजेक्ट में एक यूजर कॉन्ट्रॉल बनाया, और प्रोजेक्ट के निर्माण के बाद, मुझे इसे अपने टूलबॉक्स में रखने की जरूरत है, और इसे एक सामान्य नियंत्रण के रूप में उपयोग करें। लेकिन मैं नहीं कर सकता UserControlअपने प्रोजेक्ट नाम स्थान में है, और मैंने कोशिश की Choose Itemसही क्लिक मेनू में, लेकिन मैं इसे जोड़ने के लिए एक रास्ता नहीं मिला।

जवाबों:


114

मैं मान रहा हूँ कि आप VS2010 का उपयोग कर रहे हैं (यही कारण है कि आपने इस प्रश्न को टैग किया है) मुझे वीएस 200 8/2005 की तरह टूलबॉक्स में स्वचालित रूप से जोड़ने के लिए समस्या आ रही थी। वास्तव में टूलबॉक्स ऑटो आबादी को रोकने का एक विकल्प है!

टूल्स> विकल्प> विंडोज फॉर्म डिजाइनर> जनरल पर जाएं

सूची के निचले भाग में आपको टूलबॉक्स> ऑटोटूलबॉक्सपॉपलेट मिलेगा, जो कि फाल्स के लिए नए इंस्टाल डिफॉल्ट पर है। इसे सही सेट करें और फिर अपने समाधान का पुनर्निर्माण करें।

अरे presto वे उपयोगकर्ता नियंत्रण आप समाधान में स्वचालित रूप से टूलबॉक्स में जोड़ा जाना चाहिए। आपको समाधान को फिर से लोड करना पड़ सकता है।


31
मेरे लिए यहाँ मुख्य शब्द "पुनर्निर्माण" था ... यह कोशिश नहीं की थी, डीओएच! कर रही है कि अकेले मेरे लिए यह हल।
डैनी बेकेट

2
और, मुझे पुनर्निर्माण के बाद समाधान फिर से खोलना पड़ा
जिम लहमन

1
VS2012 में उन्होंने अब विकल्प संवाद के लिए 'इस के लिए वर्तमान समाधान फिर से खोला जाना चाहिए' के ​​संकेत को जोड़ा है।
कार्लोस पी

2
@AnatoliiGumennyi आपको @ आर्सेनी के निर्देश का पालन करना होगा यदि UserControlवर्तमान परियोजना के बाहर है।
14

2
नोट: वीएस २०१३ में दिखता है, टूलबॉक्स> ऑटोटूलबॉक्सपॉइलेट सेटिंग अब नए इंस्टाल पर ट्रू पर डिफॉल्ट करती है।
कूर्मड्यूगन

35

टूलबार पर राइट-क्लिक करें फिर संदर्भ मेनू में "आइटम चुनें" पर क्लिक करें। पंजीकृत घटकों के साथ एक संवाद पॉप अप होता है। इस संवाद में "ब्राउज" पर क्लिक करें जिसे आप उपयोग करना चाहते हैं, उस उपयोगकर्ता का चयन करें।

पुनश्च। इस विधानसभा को पहले पंजीकृत किया जाना चाहिए।


17
क्या आप 'पहले पंजीकृत' समझा सकते हैं? मुझे नहीं लगता कि इसकी आवश्यकता है।
हेंक होल्टरमैन

25

मैंने पाया कि उपयोगकर्ता नियंत्रण में एक पैरामीटर रहित निर्माता होना चाहिए या यह सूची में दिखाई नहीं देगा। कम से कम vs2005 में यह सच था।


8
इसके अलावा vs2012 में।
कोलेबिभर्न

8
इसके अलावा vs2013 में।
कोनर मैकगिनेंस

6
इसके अलावा vs2015 में?
सर्दार

5
हाँ भी vs2015 में
JRB

5
सूची में vs2017 जोड़ें
रयान

14

वीएस 2010 का उपयोग करना:

मान लीजिए कि आपके पास एक Windows.Forms परियोजना है। आप प्रोजेक्ट में एक UserControl (MyControl कहते हैं) जोड़ते हैं, और इसे सभी डिज़ाइन करते हैं। अब आप इसे अपने टूलबॉक्स में जोड़ना चाहते हैं।

जैसे ही प्रोजेक्ट एक बार सफलतापूर्वक बन जाता है, यह आपके फ्रेमवर्क कंपोनेंट्स में दिखाई देगा। संदर्भ मेनू प्राप्त करने के लिए टूलबॉक्स पर क्लिक करें, "आइटम चुनें ..." का चयन करें, और ".NET फ्रेमवर्क घटक" टैब के तहत अपने नियंत्रण (MyControl) के नाम पर ब्राउज़ करें।

Dlls का उपयोग करने पर लाभ: आप अपने फॉर्म के रूप में उसी प्रोजेक्ट में नियंत्रण संपादित कर सकते हैं, और प्रपत्र नए नियंत्रणों के साथ निर्माण करेगा। हालांकि, नियंत्रण केवल इस परियोजना के लिए उपलब्ध होगा।

नोट: यदि नियंत्रण में त्रुटियां हैं, तो उन्हें युक्तियों पर जाने से पहले हल करें, या डिजाइनर को दिल का दौरा पड़े।


1
यदि आप टूलबॉक्स में .exe आयात करते हैं तो यह अन्य प्रोजेक्ट्स के लिए भी उपलब्ध हो सकता है।
सेबस्टियन

1
किसी भी उत्तर में "या डिजाइनर को दिल का दौरा पड़ता है" को मेरा वोट मिलता है!
जोएल

मैंने एक ही काम किया और यह सब अच्छा है, लेकिन जब मैंने कोड को किसी अन्य प्रोजेक्ट में स्थानांतरित किया, तो एक dll बनाएँ, और dll फ़ाइल को संदर्भित करें, कस्टम नियंत्रण दिखाई नहीं देता है।
फांडी सुसंतो

6

मेरे पास कई उपयोगकर्ता नियंत्रण थे, लेकिन एक ने टूलबॉक्स में दिखाने से इनकार कर दिया , भले ही मैंने समाधान का पुनर्निर्माण किया और इसे चुनिंदा ... डायलॉग में चेक किया गया ।

उपाय:

  1. से समाधान एक्सप्लोरर मैं राइट-क्लिक किया हमलावर उपयोगकर्ता नियंत्रण फ़ाइल और चयनित प्रोजेक्ट से अलग
  2. समाधान का पुनर्निर्माण करें
  3. उपयोगकर्ता नियंत्रण को राइट-क्लिक करें और प्रोजेक्ट में शामिल करें (यह मानते हुए कि आपके पास समाधान एक्सप्लोरर में सक्षम सभी फाइलें दिखाएं ) का चयन करें

यह भी नोट करें कि आपके पास AutoToolboxPopulate विकल्प सक्षम होना चाहिए। जैसा कि @DaveF उत्तर बताता है।

वैकल्पिक समाधान: मुझे यकीन नहीं है कि यह काम करता है, और मैं इसे आज़मा नहीं सकता क्योंकि मैंने पहले से ही अपने मुद्दे को हल कर लिया है, लेकिन यदि आपने आइटम चुनें से उपयोगकर्ता नियंत्रण अनियंत्रित किया है ... संवाद, ठीक है, तो ठीक है, फिर इसे वापस खोलें और उपयोगकर्ता नियंत्रण की जाँच की। वह भी काम कर सकता है।


3

कुछ तरीके हैं।

  1. अपने मूल प्रोजेक्ट में, फ़ाइल चुनें। निर्यात टेम्पलेट
    तब आइटमट्रीमप्लेट चुनें और विज़ार्ड का पालन करें।

  2. अपने UserControl को एक अलग ClassLibrary (और नामस्थान आदि को ठीक करें) पर ले जाएं।
    प्रोजेक्ट से Classlibrary के लिए एक रेफरी जोड़ें जिसे इसकी आवश्यकता है। GAC या डीएलएल फ़ाइल के साथ कुछ भी परेशान मत करो।

मैं सामान्य टूलबॉक्स में UserControl डालने की सलाह नहीं दूंगा, लेकिन यह किया जा सकता है। @Arseny से जवाब देखें


यह बेहतर तरीका लगता है। एकमात्र दोष यह है कि आप नियंत्रण को नेत्रहीन रूप से संपादित नहीं कर सकते हैं (या कम से कम मुझे नहीं पता कि कैसे)।
सेबेस्टियन

कोई बात नहीं, मैंने टेम्पलेट को तत्व के रूप में जोड़ा और डिजाइनर दिखा रहा है।
सेबेस्टियन

मैं पूरी तरह सहमत हूं और अगर DLControl की परियोजना उसी समाधान में है, तो DLL से लिंक करने के खिलाफ दृढ़ता से सलाह दूंगा। और यह एक DLL के साथ काम करेगा, अर्थात लाइब्रेरी प्रोजेक्ट में UserControl किसी भी WinForms प्रोजेक्ट में दिखाई देगा जो लाइब्रेरी का संदर्भ देता है (एक पुनर्निर्माण के बाद, निश्चित रूप से ;-))।
ज़ान-कुन क्लार्क-डेविस

2

मेरे मामले में, मैं इस परियोजना में किसी भी नियंत्रण को नहीं देख सकता था। टूलबॉक्स पर राइट क्लिक करने और "शो ऑल" का चयन करने के बाद ही मैंने उन्हें देखा, लेकिन फिर भी वे अक्षम थे ...

Windows अनुप्रयोग से ClassLibrary के लिए प्रोजेक्ट प्रकार को बदलना ठीक कर दिया।


1

यदि आप अपने बेस कंट्रोल में जेनेरिक का उपयोग कर रहे हैं तो बेसिक क्वेशन। अगर हाँ:

हम कहते हैं कि हमारा नियंत्रण है:

public class MyComboDropDown : ComboDropDownComon<MyType>
{
    public MyComboDropDown() { }
}

MyComboDropDown इस पर डिज़ाइनर को खोलने की अनुमति नहीं देगा और टूलबॉक्स में नहीं दिखाया जाएगा। क्यों? क्योंकि आधार नियंत्रण पहले से संकलित नहीं है - जब MyComboDropDown का अनुपालन किया जाता है। आप इसे संशोधित कर सकते हैं:

public class MyComboDropDown : MyComboDropDownBase
{
    public MyComboDropDown() { }
}

public class MyComboDropDownBase : ComboDropDownComon<MyType>
{

}

पुनर्निर्माण के बाद की तुलना में, और टूलबॉक्स को रीसेट करना यह MyComboDropDown को डिजाइनर और टूलबॉक्स में भी देखने में सक्षम होना चाहिए


0

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


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