दिलचस्प पोस्ट
आईआईएस 8 पर डब्ल्यूसीएफ; * .svc हैंडलर मानचित्रण काम नहीं करता है Int argc, चार * argv क्या मतलब है? ऐप कॉमपैप 22.1 और उससे ऊपर के नए अलर्ट डाइलॉग का उपयोग कैसे करें और कैसे करें आप कैसे xaml से पैरामीटर पास करते हैं? जावा फ्रंट नियंत्रक आईफोन कॉल लॉग / इतिहास शाखा की भविष्यवाणी विफलता के लिए एक सशर्त कदम कमजोर क्यों नहीं है? सत्र अपहरण को रोकना मूल्य मिलान मूल्य के लिए NSArray खोजें एंड्रॉइड एप्लिकेशन में फेसबुक एसडीके से ईमेल आईडी कैसे प्राप्त करें? वीएस2017 में SQLite प्रदाता क्या SQL सर्वर में मैक्स फंक्शन है, जो मैथ। मैक्स जैसे दो मान लेता है? एक कक्ष में एकाधिक मूल्यों की SQL क्वेरी JQuery में टेक्स्टरेआ का मूल्य निर्धारित करें ऑब्जेक्ट के भीतर ऑब्जेक्ट प्रॉपर्टी एक्सेस करें

कस्टम नियंत्रण में अवांछित गुणों को छिपाते हुए

क्या यह व्युत्पन्न नियंत्रणों में संपत्ति को छिपाने का तरीका है?

public class NewButton : Button

 [Browsable ( false )] public new ContentAlignment TextAlign { get; set; } 

इसके अलावा यह प्रॉपर्टी विंडो में प्रॉपर्टी को डिज़ाइनर में छुपाता है लेकिन मैं कोड में संपत्ति को कैसे छिपा सकता हूं?

Solutions Collecting From Web of "कस्टम नियंत्रण में अवांछित गुणों को छिपाते हुए"

कोड से, सबसे निकटतम आप इसे छिपाने के लिए कर सकते हैं, और शायद इसे सीधे कॉल करने के लिए दर्द हो सकता है – ध्यान दें कि जब छिपा दिया जाता है, तो यह दायित्व है, और इसमें से कोई भी एक कलाकार के पीछे काम नहीं करेगा:

 // about the closest you can do, but not really an answer [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)] [Obsolete("just cast me to avoid all this hiding...", true)] public new ContentAlignment TextAlign { get; set; } 

निजी तौर पर, मैं परेशान नहीं होता। यह मजबूत नहीं है (बस डाली)।

आप [EditorBrowsable] विशेषता का उपयोग कर सकते हैं, जैसा कि यहां दर्ज़ किया गया है ।

 [EditorBrowsable(EditorBrowsableState.Never)] public bool HideMeInIntellisense { // ... 

प्रलेखन से:

… दृश्य स्टूडियो में IntelliSense इंजन इस विशेषता का उपयोग यह निर्धारित करने के लिए करता है कि संपत्ति या विधि दिखाने के लिए क्या है

हालांकि, उपयोगकर्ता वीएस सेटिंग्स में इसे ओवरराइड कर सकते हैं। रीशरपर की एक ऐसी सेटिंग भी है जो नियंत्रण करती है कि क्या इस विशेषता को इसके इंटेलेसिंस में सम्मानित किया गया है या नहीं।

उत्सुकता से, आप उपयोगकर्ताओं से कुछ क्यों छिपाना चाहते हैं? सिर्फ इसलिए कि किसी सदस्य को ऊपर वर्णित तरीके से छुपा हुआ है इसका मतलब यह नहीं है कि आप इसे कोड में उपयोग नहीं कर सकते और इसे सफलतापूर्वक संकलित कर सकते हैं। यह केवल सदस्य की खोज योग्यता को रोकता है।

नहीं, आप उन्हें डिज़ाइनर से हटा सकते हैं (जैसा कि दिखाया गया है), लेकिन आप वास्तव में उन कोड को छिपा नहीं सकते हैं, जो प्रतिस्थापन सिद्धांत का उल्लंघन करेंगे। इसे कहा गया है और यहां कई बार उत्तर दिया गया है, उदाहरण के लिए इस तरह के प्रश्न देखें ।

हो सकता है कि आप क्या करना चाहते हैं, कंटेनर कंट्रोल या यूजरकंट्रोल से प्राप्त होता है, उस नियंत्रण में एक बटन जोड़ें और उन बटनों को बेनकाब करें जिन्हें आप रखना चाहते हैं।

आप इसे निजी क्यों नहीं बनाते? यह गारंटी देता है कि पूर्वजों को यह नहीं दिखाई देगा। संपादित करें: इस मामले में आपको आधार से एक नया वर्ग प्राप्त करना होगा और अपने नए वर्ग का उपयोग करना होगा, जो अब थ्रेस संपत्ति छुपाता है

 public class MyTextBox: TextBox { ... private new ContentAlignment TextAlign { get { return base.ContentAlignment; } set { base.ContentAlignment = value; } } }