2013-04-03 104 views
3

我有一個包含幾個公共屬性的類。其中一個屬性是包含另一個類的實例的List。它打破了這樣的事情:如何自定義PropertyGrid對象的集合編輯器中的描述?

namespace Irig106Library.Filters.PCM 
{ 
    [Description("Definition")] 
    public class MinorFrameFormatDefinition 
    { 
     [Description("Word Number")] 
     public int WordNumber { get; set; } 

     [Description("Number of Bits")] 
     public int NumberOfBits { get; set; } 
    } 

    public class MinorFrame 
    { 
     // ... other properties here 

     [Category("Format")] 
     [Description("Minor Frame Format Definitions")] 
     public List<MinorFrameFormatDefinition> MinorFrameFormatDefinitions { get; set; } 
    } 
} 

我有一個PropertyGrid對象,編輯次要幀對象。它有一個字段,其中包含對MinorFrameFormatDefinition對象集合的引用。當我在這個領域點擊按鈕打開集合編輯器,然後單擊添加按鈕,我得到這個:

enter image description here

如何獲取集合編輯器Definition標記的對象,而不是Irig106Library.Filters.PCM.MinorFrameFormatDefinition

回答

4

你可以重寫的ToString(),這樣

public class MinorFrameFormatDefinition 
{ 
    [Description("Word Number")] 
    public int WordNumber { get; set; } 

    [Description("Number of Bits")] 
    public int NumberOfBits { get; set; } 

    public override string ToString() 
    { 
     return "hello world"; 
    } 
} 

或者,如果你不想改變類,你也可以定義上有一個類型轉換器:

[TypeConverter(typeof(MyTypeConverter))] 
public class MinorFrameFormatDefinition 
{ 
    [Description("Word Number")] 
    public int WordNumber { get; set; } 

    [Description("Number of Bits")] 
    public int NumberOfBits { get; set; } 
} 

public class MyTypeConverter : TypeConverter 
{ 
    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) 
    { 
     if (destinationType == typeof(string)) 
      return "hello world"; 

     return base.ConvertTo(context, culture, value, destinationType); 
    } 
} 
+0

它的工作原理,但是如何更改集合編輯器的標題?例如,將「MinorFrameFormatDefinition集合編輯器」更改爲「My Frame集合編輯器」。 – Andark 2015-01-27 09:03:56

+0

@Andark - 這是無關的 - 問另一個問題 – 2015-01-27 11:12:54

相關問題