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-这与此无关-询问另一个问题