我正在处理用户定义的按钮,它有两个自定义属性,如下所示:
public enum FirstType
{
egg,
leg
}
// first property:
public FirstType FirstProperty { get; set; }
我有一个基类和这个基类的5个派生类,第二个属性将引用这5个中的一个,
//second property
public BaseClass SecondProperty { get; set; }
现在我的问题是:如何在properties window
中为第二个属性创建这5个类的下拉列表,就像第一个属性一样?有可能吗?
答案 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
语句中调用这些类。谢谢大家。