2
개체를, 어떤 속성 그리드의 값 섹션에 표시되어 AgeWrapper의 클래스 이름 만 AgeWrapper.Age의 값은 .재산권 그리드
어쨌든 속성 표에서 합성 객체의 클래스 이름 대신이 복합 객체 (이 경우 AgeWrapper.Age)의 값을 표시 할 수 있도록 설정해야합니까?
개체를, 어떤 속성 그리드의 값 섹션에 표시되어 AgeWrapper의 클래스 이름 만 AgeWrapper.Age의 값은 .재산권 그리드
어쨌든 속성 표에서 합성 객체의 클래스 이름 대신이 복합 객체 (이 경우 AgeWrapper.Age)의 값을 표시 할 수 있도록 설정해야합니까?
형식 변환기를 만든 다음 특성을 사용하여 형식 변환기를 AgeWrapper 클래스에 적용해야합니다. 그런 다음 속성 표는 해당 유형 변환기를 사용하여 문자열을 표시합니다. 다음과 같은 형식 변환기를 만듭니다.
public class AgeWrapperConverter : ExpandableObjectConverter
{
public override bool CanConvertTo(ITypeDescriptorContext context,
Type destinationType)
{
// Can always convert to a string representation
if (destinationType == typeof(string))
return true;
// Let base class do standard processing
return base.CanConvertTo(context, destinationType);
}
public override object ConvertTo(ITypeDescriptorContext context,
System.Globalization.CultureInfo culture,
object value,
Type destinationType)
{
// Can always convert to a string representation
if (destinationType == typeof(string))
{
AgeWrapper wrapper = (AgeWrapper)value;
return "Age is " + wrapper.Age.ToString();
}
// Let base class attempt other conversions
return base.ConvertTo(context, culture, value, destinationType);
}
}
ExpandableObjectConverter에서 상속받습니다. 이는 AgeWrapper 클래스에 그리드의 AgeWrapper 항목 옆에 + 버튼이 있어야 노출되어야하는 AgeWrapper.Age라는 자식 속성이 있기 때문입니다. 클래스에 노출시키고 자하는 자식 속성이 없으면 대신 TypeConverter에서 상속받습니다. 이제이 변환기를 수업에 적용하십시오 ...
[TypeConverter(typeof(AgeWrapperConverter))]
public class AgeWrapper