如何为枚举使用自定义UITypeEditor?

时间:2012-09-25 09:50:50

标签: c# .net propertygrid uitypeeditor

我为MSDN的演练类型Smiley编写了一个自定义UITypeEditor http://msdn.microsoft.com/en-us/library/ms171840.aspx

当用户点击省略号时,我的UITypeEditor将启动一个模态对话框。

public class SmileyEditor : UITypeEditor
{
    public override UITypeEditorEditStyle GetEditStyle(System.ComponentModel.ITypeDescriptorContext context)
    {
        return UITypeEditorEditStyle.Modal;
    }

经过多次痛苦后,我发现如果我的类型是一个类,它会起作用,但如果它是一个枚举则不行。发生了什么事?

    [Editor(typeof(SmileyEditor), typeof(System.Drawing.Design.UITypeEditor))]
    public Smiley face { get; set; }

如果Smiley类型是枚举,则属性网格不显示省略号按钮,只显示下拉列表。为什么呢?

1 个答案:

答案 0 :(得分:1)

显然,当存在系统类型编辑器时,PropertyGrid会优先于自定义编辑器。解决方法是使用TypeConvertorAttribute注释您的类型,引用一个覆盖方法GetStandardValuesSupported的TypeConvertor。见https://stackoverflow.com/a/4067173/284795