我的自定义类的对象有几个字符串类型的属性。对于其中一个属性,我使用自定义TypeConverter在PropertyGrid中显示此属性的标准值列表。现在我有问题,现在这个属性在PropertyGrid中没有显示为简单的字符串,而是作为一个具有自身的Length属性的对象,但我不想要它。怎么解决?
我的代码是这样的:
class ItemAdapter
{
public ItemAdapter(Item pitem)
{
_item = pitem;
...
}
// This property shows as simple string in PropertyGrid
public string Name
{
get
{
return _item.Name;
}
set
{
_item.Name = value;
}
}
...
// This property shows Length subproperty in PropertyGrid
[TypeConverter(typeof(ItemTypeConverter))]
public string type
{
get
{
return _item.type;
}
set
{
_item.type = value;
}
}
}
我只使用TypeConverter来显示标准值列表,如下所示:
public class ItemTypeConverter : ExpandableObjectConverter
{
public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
{
return true;
}
private readonly static List<string> _standardValues = new List<string>()
{
"value1",
"value2"
};
public override System.ComponentModel.TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
{
return new System.ComponentModel.TypeConverter.StandardValuesCollection( _standardValues);
}
public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)
{
return true;
}
}
答案 0 :(得分:1)
将ExpandableObjectConverter
替换为TypeConverter
。