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);
}
}
}
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With