2012-03-20 12 views
6

मेरे पास System.Windows.Forms.PropertyGrid विभिन्न प्रकार के मानों के साथ है। एक विशिष्ट आइटम के लिए, मैं उपयोगी मानों की एक सूची चुनना चाहता हूं। उपयोगकर्ता एक नया मान भी टाइप कर सकता है। कुछ एक पारंपरिक लटकती बता गया के समान:मैं सिस्टम में एक संपादन योग्य combobox कैसे जोड़ूं। Windows.Forms.PropertyGrid?

enter image description here

अब तक, मैं अपने खुद के System.ComponentModel.TypeConverter है, लेकिन मैं समझ नहीं कैसे सुझाव दिया मूल्यों और संभावना को संपादित करने के साथ दोनों लटकती पाने के लिए सीधे मूल्य। कृपया सहायता कीजिए!

उत्तर

6

आप इसे अपने UITypeEditor लागू करके इसे पूरा कर सकते हैं।

मैं Getting the Most Out of the .NET Framework PropertyGrid Control पढ़ने की अनुशंसा करता हूं। विशेष रूप से, Providing a Custom UI for Your Properties शीर्षक वाला अनुभाग किसी विशिष्ट संपत्ति के लिए कस्टम नियंत्रण बनाने के तरीके के माध्यम से चलता है।

+2

'System.ComponentModel.StringConverter' को विरासत में समस्या हल हो गई। जाहिर है, पाठ संपादन तारों की तुलना में अन्य प्रकारों के साथ नहीं किया जा सकता है। हालांकि लिंक के लिए धन्यवाद! – l33t

4

यह आसान है। अपने StringConverterfalse पर GetStandardValuesExclusive के लिए और यह है।

यहाँ देखो:

internal class cmbKutoviNagiba : StringConverter 
{ 
     public override bool GetStandardValuesExclusive(ITypeDescriptorContext context) 
     { 
      return FALSE; // <----- just highlight! remember to write it lowecase 
     } 

     public override TypeConverter.StandardValuesCollection GetStandardValues(
      ITypeDescriptorContext context) 
     { 
      string[] a = { "0", "15", "30", "45", "60", "75", "90" }; 
      return new StandardValuesCollection(a); 
     } 

     public override bool GetStandardValuesSupported(ITypeDescriptorContext context) 
     { 
      return true; 
     } 
    } 

मैं बड़े अक्षरों में FALSE लिखा था, बस आप इसे देखने के लिए easyer बनाने के लिए। कृपया इसे छोटे अक्षरों में रखें :)

+1

बीटीडब्ल्यू: 'GetStandardValuesExclusive' का ओवरराइड केवल 'स्ट्रिंग कनवर्टर' से प्राप्त कक्षा में उपयोग किए जाने पर ही कॉल किया जाता है। ऐसा लगता है कि जब आप अपनी कक्षा को 'टाइप कनवर्टर' से प्राप्त करते हैं तो उसे कॉल नहीं किया जाता है। –

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