Как использовать пользовательский UITypeEditor для перечисления?

Я написал собственный UITypeEditor для своего типа Smiley в соответствии с пошаговым руководством MSDN 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;
    }

После MUCH PAIN я обнаружил, что это работает, если мой тип - класс, но не если это перечисление. Что происходит?

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

Если тип Smiley является перечислением, то в сетке свойств не отображается кнопка с многоточием, а только раскрывающийся список. Почему?


person Colonel Panic    schedule 25.09.2012    source источник


Ответы (1)


По-видимому, когда существует редактор системного типа, PropertyGrid предпочитает его собственному редактору. Обходной путь — аннотировать ваш тип с помощью TypeConvertorAttribute, ссылаясь на TypeConvertor, который переопределяет метод GetStandardValuesSupported. См. https://stackoverflow.com/a/4067173/284795.

person Colonel Panic    schedule 25.09.2012