2009-03-05 14 views
12

मेरे पास एक कस्टम नियंत्रण है जो मैंने बनाया है। यह System.Windows.Forms.Control से विरासत में मिलता है, और इसमें कई नई गुण हैं जो मैंने जोड़े हैं। क्या डिफ़ॉल्ट "टेक्स्ट" संपत्ति के बजाय मेरे गुण (उदाहरण के लिए टेक्स्टऑन और टेक्स्टऑफ) दिखाना संभव है।मैं डिज़ाइन-टाइम (सी #) पर कुछ डिफ़ॉल्ट नियंत्रण गुणों को कैसे छिपा सकता हूं?

मेरा नियंत्रण ठीक काम करता है, मैं बस संपत्ति विंडो को अव्यवस्थित करना चाहता हूं।

उत्तर

15

आप या तो उन्हें (अगर वे ओवरराइड किया जा सकता) रद्द कर सकते थे और Browsable विशेषता लागू, false निर्दिष्ट करते समय, या संपत्ति का एक नया संस्करण बना सकते हैं और एक ही विशेषता लागू (यह दूसरा दृष्टिकोण हमेशा इतनी काम करने के लिए प्रकट नहीं होता है YMMV)।

इसके अलावा, आप अपने प्रकार के लिए कस्टम TypeConverter का उपयोग कर सकते हैं और GetProperties विधि को ओवरराइड कर सकते हैं ताकि यह नियंत्रित किया जा सके कि आपके गुण के लिए कौन से गुण प्रदर्शित होते हैं। यह दृष्टिकोण अंतर्निहित आधार वर्गों को बदलने के लिए अधिक मजबूत है लेकिन आप जो हासिल करना चाहते हैं उसके आधार पर अधिक प्रयास कर सकते हैं।

मैं अक्सर Browsable विशेषता और एक कस्टम TypeConverter के संयोजन का उपयोग करता हूं।

+0

धन्यवाद ओवरराइड होगा द्वारा आरंभ नहीं किया जा जाएगा, ब्राउज़ करने योग्य मेरे लिए इसका ख्याल रखता है। – Krakerjak

+0

कोई समस्या नहीं है। मदद करने के लिए हमेशा खुश हैं। TypeConverter –

+1

+1 मेरे लिए भी काम करता है +1 –

6

संपत्ति को ओवरराइड करें और [Browsable(false)] जोड़ें।

आप [EditorBrowsable(EditorBrowsableState.Never)] भी जोड़ना चाहते हैं, जो कोड संपादक में IntelliSense में संपत्ति को छुपाएगा। ध्यान दें कि यह केवल मूल नियंत्रण से अलग समाधान में छिपा होगा।

4

System.ComponentModel का उपयोग कर;

[Browsable(false), DesignerSerializationVisibility(
          DesignerSerializationVisibility.Hidden)] 
public int MyHiddenProp {get; set; } 

कि रास्ते में मेरे लिए काम किया, यह है कि यह डिजाइनर गुण में प्रकट नहीं होता है, और propertiy डिजाइनर, जो अपने खुद के initialisation ....

+0

के लिए – Kevin

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

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