Есть классы A и B :
class A
{
public string Name
{
get
{
...
}
set
{
...
}
}
public override string ToString()
{
...
}
}
class B
{
public A PropA
{
get
{
...
}
set
{
...
}
}
}
Объект типа B отображается в PropertyGrid. Значение свойства типа A не отображается.
Как сдалать так, чтобы в PropertyGrid для свойства типа A отображалось значение Name или ToString()?
Нужно сделать свой класс унаследованный от TypeConverter. Переопределить методы
public bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
и
public object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
в CanConvertTo, что-то типа:
if (destinationType == typeof(A))
{
return true;
}
return base.CanConvertTo(context, destinationType);
а в ConvertTo, примерно так:
if (value is A)
{
return value.ToString();
}
Если надо осуществлять ввод в это свойство, то наверное надо переопределить и ConvertFrom, а еще лучше в inete или MSDN почитать про TypeConverter и примеры с ним поискать
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Можно просто свойство A пометить атрибутом, а вот каким,
б###а-муха, не помню — флешку сегодня дома оставил. Сейчас попробую в интернете нарыть.
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Здравствуйте, dma_caviar, Вы писали:
_>Можно просто свойство A пометить атрибутом, а вот каким,
_>б###а-муха, не помню — флешку сегодня дома оставил. Сейчас попробую в интернете нарыть.
[TypeConverter(typeof(MyTypeConverter))] ?
Здравствуйте, AThe, Вы писали:
AT>Как сдалать так, чтобы в PropertyGrid
Читать
статью, там очень популярно, с картинками и примерами кода описаны основные моменты работы с PropertyGrid
... << RSDN@Home 1.2.0 alpha rev. 569>>
Немного перемудрил с Editor`ом. Значение отображает ToString().