【问题标题】:How do you customize the descriptions in the Collection Editor of the PropertyGrid object?如何在 PropertyGrid 对象的集合编辑器中自定义描述?
【发布时间】:2013-03-25 20:49:16
【问题描述】:

我有一个包含几个公共属性的类。其中一个属性是包含另一个类的实例的列表。它分解了这样的东西:

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 对象,它可以编辑 Minor Frame 对象。它有一个字段,其中包含对MinorFrameFormatDefinition 对象集合的引用。当我单击此字段中的按钮以打开集合编辑器并单击添加按钮时,我得到了这个:

如何让集合编辑器用Definition 而不是Irig106Library.Filters.PCM.MinorFrameFormatDefinition 标记对象?

【问题讨论】:

    标签: c# winforms propertygrid collectioneditor


    【解决方案1】:

    你可以像这样覆盖 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 Collection Editor”更改为“My Frame Collection Editor”。
    • @Andark - 这是无关的 - 问另一个问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-15
    • 2015-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多