Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

change property to combobox in propertygrid

I have this code from internet source, I thought this code might be working well for changing the property from textbox to combobox in PropertyGrid, but after I run this, it is still a textbox. Could anyone help to solve this?

 public class Testing
{   

    private String _formatString;
    [Category("Display")]
    [DisplayName("Format String")]
    [Description("Format string governing display of data values.")]
    [DefaultValue("")]
    [TypeConverter(typeof(FormatStringConverter))]
    public String FormatString { get; set; }

    public class FormatStringConverter : StringConverter
    {
        List<String> list = new List<String>();

        public override bool GetStandardValuesSupported(ITypeDescriptorContext context) { return true; } // true means show combobox
        public override bool GetStandardValuesExclusive(ITypeDescriptorContext context) { return true; } // true list to list, false will show the list, but allow free=form.
        public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
        {

            list.Add("Curren");
            list.Add("Currency");
            list.Add("Scientific Notation");
            list.Add("General Number");
            list.Add("Number");
            list.Add("Percent");
            list.Add("Time");
            list.Add("Date");



            return new StandardValuesCollection(list);
        }
    }
}
like image 562
Mers Tho Avatar asked Oct 19 '22 12:10

Mers Tho


1 Answers

If we need to display property value from TextBox to ComboBox, we want to write custom editor for specific property type. Please find the below code snippet to display property value (which is type of String array) in ComboBox

     public class ComboBoxEditor : ITypeEditor
    {
        public void Attach(PropertyViewItem property, PropertyItem info)
        {

        }

        ComboBoxAdv cmb;
        public object Create(PropertyInfo propertyInfo)
        {
            cmb = new ComboBoxAdv();
            cmb.Items.Add("Curren");
            cmb.Items.Add("Currency");
            cmb.Items.Add("Scientific Notation");
            cmb.Items.Add("General Number");
            cmb.Items.Add("Number");
            cmb.Items.Add("Percent");
            cmb.Items.Add("Time");
            cmb.Items.Add("Date");
            return cmb;
        }

        public void Detach(PropertyViewItem property)
        {
            throw new NotImplementedException();
        }

}

CustomEditor ComboBoxEditor = new CustomEditor() { HasPropertyType = true, PropertyType = typeof(string[]) };
        ComboBoxEditor.Editor = new ComboBoxPropertyGridSample.ComboBoxEditor();

i have also attached simple sample for this

http://www.syncfusion.com/downloads/support/directtrac/general/ze/ComboBoxPropertyGridSample1192877556

like image 122
Rajkumar Ganesamoorthy Avatar answered Nov 07 '22 23:11

Rajkumar Ganesamoorthy