【问题标题】:PropertyGrid collection display textPropertyGrid 集合显示文本
【发布时间】:2026-02-19 15:05:01
【问题描述】:

在 C# 中,当使用 PropertyGrid(其中对象具有 Collection)时,是什么决定了 DisplayName 旁边的值是否显示 "(Collection)" 的值?

这个值有特定的属性吗?

谢谢

【问题讨论】:

  • 似乎(Collection) 出现在List<T> 而不是IEnumerable<T>。固定数组有一个可扩展的节点,这与集合完全不同。

标签: c# collections propertygrid


【解决方案1】:

您可以使用 TypeConverters。

public class MyCollectionTypeConverter : TypeConverter
{
    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
    {
        if (value is List<string>)
        {
            return string.Join(",", ((List<string>) value).Select(x => x));
        }
        return base.ConvertTo(context, culture, value, destinationType);
    }
}

并添加为属性;

    [TypeConverter(typeof(MyCollectionTypeConverter))]
    public List<string> Prop1 { get; set; }

参考:How to: Implement a Type Converter

【讨论】: