我有一个包含多个公共属性的类。其中一个属性是包含另一个类的实例的List。它打破了这样的事情:
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
标记对象?
答案 0 :(得分: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:
[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);
}
}