IIRC вам нужно написать TypeConverter , чтобы получить окно свойств для расширения этих свойств.
Предположим, вы используете следующий тип для сложного свойства:
[DescriptionAttribute("Expand to see the spelling options for the application.")]
public class SpellingOptions
{
private bool spellCheckWhileTyping = true;
private bool spellCheckCAPS = false;
private bool suggestCorrections = true;
[DefaultValueAttribute(true)]
public bool SpellCheckWhileTyping
{
get { return spellCheckWhileTyping; }
set { spellCheckWhileTyping = value; }
}
[DefaultValueAttribute(false)]
public bool SpellCheckCAPS
{
get { return spellCheckCAPS; }
set { spellCheckCAPS = value; }
}
[DefaultValueAttribute(true)]
public bool SuggestCorrections
{
get { return suggestCorrections; }
set { suggestCorrections = value; }
}
}
Ваши свойства, вероятно, сейчас выглядят так:
Обратите внимание, что свойство Параметры проверки орфографии недоступно.
Вам необходимо создать TypeConverter, чтобы преобразовать тип объекта, чтобы он мог отображаться правильно..NET Framework предоставляет класс ExpandableObjectConverter , чтобы упростить эту задачу.
Например:
public class SpellingOptionsConverter:ExpandableObjectConverter
{
//...
}
Для создания пользовательского TypeConverter необходимо выполнить следующие действия.
Для реализации простого преобразователя типов, который может преобразовать строку в Point
- Определить класс, производный от ExpandableObjectConverter (или TypeConverter).
- Переопределить метод CanConvertFromэто указывает, какой тип конвертер может конвертировать из.Этот метод перегружен.
- Переопределите метод ConvertFrom, который реализует преобразование.Этот метод перегружен.
- Переопределите метод CanConvertTo, который указывает, к какому типу конвертер может конвертироваться.Нет необходимости переопределять этот метод для преобразования в строковый тип.Этот метод перегружен.
- Переопределите метод ConvertTo, который реализует преобразование.Этот метод перегружен.
- Переопределите метод IsValid, который выполняет проверку.Этот метод перегружен.
Посмотрите следующую страницу MSDN для получения дополнительной информации о том, как реализовать TypeConverter:
Как: реализовать преобразователь типов
После того как вы создали TypeConverter, вы можете применить его к своему пользовательскому типу.
[TypeConverterAttribute(typeof(SpellingOptionsConverter)),
DescriptionAttribute("Expand to see the spelling options for the application.")]
public class SpellingOptions{ ... }
И все будет хорошо:
Я быстро обобщил пример элобарата из MSDN.Здесь вы можете найти полное руководство:
Получение максимальной отдачи от .NET Framework PropertyGrid Control