使用TypeConverter时,PropertyGrid将字符串属性显示为具有Length属性的对象

时间:2014-07-03 06:51:00

标签: c# .net user-interface propertygrid

我的自定义类的对象有几个字符串类型的属性。对于其中一个属性,我使用自定义TypeConverter在PropertyGrid中显示此属性的标准值列表。现在我有问题,现在这个属性在PropertyGrid中没有显示为简单的字符串,而是作为一个具有自身的Length属性的对象,但我不想要它。怎么解决? enter image description here

我的代码是这样的:

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;
    }
}

1 个答案:

答案 0 :(得分:1)

ExpandableObjectConverter替换为TypeConverter