用户定义的控件及其属性

时间:2011-10-01 20:51:21

标签: c# winforms custom-controls

我正在处理用户定义的按钮,它有两个自定义属性,如下所示:

public enum FirstType
{
    egg,
    leg
}
// first property:
public FirstType FirstProperty { get; set; }

我有一个基类和这个基类的5个派生类,第二个属性将引用这5个中的一个,

//second property
public BaseClass SecondProperty { get; set; }

现在我的问题是:如何在properties window中为第二个属性创建这5个类的下拉列表,就像第一个属性一样?有可能吗?

2 个答案:

答案 0 :(得分:1)

对于该属性,您需要创建自己的自定义TypeConverter并覆盖GetStandardValues

这是你的财产:

[TypeConverter(typeof(MyTypeConverter)]
public BaseClass SecondProperty { get; set; }

这是你的类型转换器:

public class MyTypeConverter : TypeConverter
{
    ...

    public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
    {
        return true;
    }

    /// <summary>
    /// select only from list
    /// </summary>
    public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)
    {
        return true;
    }

    public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
    {
        return new StandardValuesCollection(/* list of derived classes */);
    }
}

答案 1 :(得分:1)

好的,我使用enum来解决我的问题,首先是这个枚举类型的属性,然后在属性的set语句中调用这些类。谢谢大家。