2016-04-01 81 views
3

我有来自Internet源的此代码,我认为此代码可能适用于将属性从文本框更改为PropertyGrid中的组合框,但运行此属性后,它仍然是文本框。有谁能帮助解决这个问题吗?将属性更改为属性网格中的组合框

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); 
     } 
    } 
} 

回答

0

如果我们需要将属性值从TextBox显示到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(); 

我还附简单样品此

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