Пользовательские элементы управления и их свойства - PullRequest
1 голос
/ 02 октября 2011

Я работаю над пользовательской кнопкой, у нее есть два пользовательских свойства, таких как:

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

, и у меня есть базовый класс и 5 производных классов этого базового класса, и второе свойство будетобратитесь к одному из этих 5,

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

Теперь мой вопрос: как мне получить выпадающий список этих 5 классов для второго свойства в properties window, как и первоеодин?Возможно ли это?

Ответы [ 2 ]

1 голос
/ 05 октября 2011

ОК, я использовал enum для решения своей проблемы, сначала свойство этого перечислимого типа, затем вызвал эти классы в set выражении свойства. Спасибо всем.

1 голос
/ 02 октября 2011

Для этого свойства вам нужно создать свой собственный 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 */);
    }
}
...