2016-04-01 83 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