C# 如何在PropertyGrid对象的集合编辑器中自定义描述?

C# 如何在PropertyGrid对象的集合编辑器中自定义描述?,c#,winforms,propertygrid,collectioneditor,C#,Winforms,Propertygrid,Collectioneditor,我有一个包含几个公共属性的类。其中一个属性是包含另一个类的实例的列表。它分解如下: namespace Irig106Library.Filters.PCM { [Description("Definition")] public class MinorFrameFormatDefinition { [Description("Word Number")] public int WordNumber { get; set; }

我有一个包含几个公共属性的类。其中一个属性是包含另一个类的实例的列表。它分解如下:

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; }
    }
}
命名空间Irig106Library.Filters.PCM
{
[说明(“定义”)]
公共类MinorFrameFormatDefinition
{
[说明(“字号”)]
public int WordNumber{get;set;}
[说明(“位数”)]
公共int NumberOfBits{get;set;}
}
公共类最小帧
{
//……这里还有其他房产
[类别(“格式”)]
[说明(“次要帧格式定义”)]
公共列表MinorFrameFormatDefinitions{get;set;}
}
}
我有一个编辑次要帧对象的对象。它有一个字段,其中包含对
MinorFrameFormatDefinition
对象集合的引用。当我单击此字段中的按钮打开集合编辑器,并单击添加按钮时,我得到以下结果:


如何让集合编辑器使用
定义来标记对象,而不是使用
Irig106Library.Filters.PCM.MinorFrameFormatDefinition来标记对象?

您可以像这样重写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:

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

它可以工作,但如何更改集合编辑器的标题?例如,将“MinorFrameFormatDefinition集合编辑器”更改为“My Frame集合编辑器”。@Andark-这与此无关-询问另一个问题