क्या गुण है कि मैं ओवरराइड नहीं कर सकते new
ऑपरेटर उपयोग कर रहा है के लिए मेरे लिए काम किया। उदाहरण के लिए, MultiSelect
ListView
नियंत्रण पर संपत्ति। मुझे MultiSelect
डिफ़ॉल्ट रूप से false
पर जाना है, लेकिन मैं अभी भी इसे बदलना चाहता हूं।
मैं सिर्फ निर्माता में false
के लिए सेट, या InitializeComponent
में, समस्या (मुझे लगता है कि) उस डिफ़ॉल्ट मान अभी भी true
है, इसलिए यदि मैं डिजाइनर, डिजाइनर सूचनाओं में true
को मान सेट है कि true
डिफ़ॉल्ट है, और इसलिए यह स्पष्ट रूप से इसे डिफ़ॉल्ट रूप से डिफ़ॉल्ट रूप से सेट करने के बजाय संपत्ति को सेट नहीं करता है। लेकिन फिर मूल्य false
होने के बजाय समाप्त होता है, क्योंकि यह कन्स्ट्रक्टर में सेट है।
/// <summary>Custom ListView.</summary>
public sealed partial class DetailsListView : ListView
{
...
[DefaultValue(false)]
public new bool MultiSelect {
get { return base.MultiSelect; }
set { base.MultiSelect = value; }
}
यह नियंत्रण अभी भी एक कार्य MultiSelect
संपत्ति है कि false
बजाय true
, और संपत्ति को चूक अभी भी चालू किए जाने पर किया जा सकता है की अनुमति देता है:
इस मुद्दे मैं निम्नलिखित कोड का इस्तेमाल किया चारों ओर पाने के लिए नया नियंत्रण
संपादित करें: मुझे अमूर्त रूपों का उपयोग करने के साथ एक समस्या का सामना करना पड़ा। मैं एक ठोस कार्यान्वयन के साथ अमूर्त रूप कक्षाओं का उपयोग कर रहा हूं, जिसे मैं डिजाइनर का उपयोग करने की आवश्यकता होने पर स्विच करता हूं। मैंने पाया कि जब मैंने कक्षा को स्विच किया था कि मैं विरासत में था कि मेरे कस्टम नियंत्रण पर गुण पुराने डिफ़ॉल्ट पर रीसेट हो जाएंगे। ऐसा लगता है कि कस्टम नियंत्रण के निर्माता में अपने डिफ़ॉल्ट पर गुण सेट करके इस व्यवहार को सही किया गया है।
स्रोत
2013-07-01 02:42:21
क्या आप बेस क्लास गुणों को लागू करने का उदाहरण दे सकते हैं? –
क्षमाप्रार्थी - यह '[डिफ़ॉल्ट वैल्यू (कुछ वैल्यू)]' है। उदाहरण के साथ एमएसडीएन का एक लिंक यहां दिया गया है: http://msdn.microsoft.com/en-us/library/system.componentmodel.defaultvalueattribute%28v=vs.90%29.aspx – Bridge
मुझे लगता है कि DefaultValue विशेषता आप क्या है जरुरत। विजुअल स्टूडियो आईडीई डिज़ाइनर फ़ाइल में विशेषता में निर्दिष्ट डिफ़ॉल्ट मान डाल देगा। यदि उपयोगकर्ता किसी अन्य मान पर डिफ़ॉल्ट मान बदल देगा, तो विजुअल स्टूडियो आईडीई डिज़ाइनर फ़ाइल को नए मान के साथ अपडेट करेगा। यह पिछले मान को फिर से लोड करने से रोक देगा जब नियंत्रण फिर से खोला जाएगा क्योंकि डिफ़ॉल्ट मान पहले ही अधिलेखित हो चुका है। – jags