폼의 모든 컨트롤을 관리하는 데 도움이되는 속성 표가 있습니다. 이러한 컨트롤은 디자이너 유형의 사용자를위한 컨트롤이므로 다른 사용자가 여러 객체를 선택할 때까지는 사용자 인터페이스에 대해별로 신경 쓰지 않습니다.여러 항목을 선택하면 어떻게 사용자 정의 문자열을 표시합니까?
나는 이러한 공통 객체에 "EffectiveDiameter"속성을위한 UITypeEditor를 가지고 있습니다. 단위 (미터 대 피트)를 추적하고 실시간으로 멋진 일을합니다. 그러나 누군가가 두 개 또는 세 개의 공통 객체를 선택하면 EffectiveDiameter는 동일한 텍스트 문자열로 평가 되더라도 비어 있습니다.
예를 들어 대부분의 컨트롤에서 Microsoft는 텍스트 출력이 "Top, Right"인 "Anchor"속성을 가지고 있습니다. 아래로 당길 때 멋진 UITypeEditor가있는 객체입니다. 그러나 모든 Anchor 설정이 동일한 다섯 개의 오브젝트를 양식에서 선택하면 속성 격자에서 여전히 "Top, Right"문자열을 볼 수 있습니다.
/// <summary>
/// The default containing class for all Unit-Management Conversion classes.
/// </summary>
[
Serializable,
EditorAttribute(typeof(umConversionTypeEditor), typeof(UITypeEditor)),
TypeConverter(typeof(umConversionTypeConverter)),
]
public class umConversion
{
...
}
public class umConversionTypeEditor : UITypeEditor
{
...
}
// Now, in my designer class, I have ...
private double _effectiveDiameter { get; set; }
[DisplayName("Effective Diameter")]
public virtual umConversion EffectiveDiameter
{
get
{
umConversion ret = new umConversion (_effectiveDiameter);
ret.MeasureInSI = _si;
return ret;
}
set
{
_effectiveDiameter = value.ImperialUnits;
}
}
}
내 사용자 지정 개체의 여러 선택하면 - 모두 동일한 유효 직경을 - 어떻게 앵커가하는 것처럼 EffectiveDiameter는 PropertyGrid가에 표시 할 수 있습니까? 지금은 그 필드가 항상 비어 있습니다.
클래스 자체에 TypeConverter가 있습니다. 그러나 거기에 트릭이 없었는지 확인하기 위해 속성에 TypeConverter (문자열을 /로 변환)를 배치하여 효과가 있는지 확인했습니다. 그렇지 않았습니다. = ( – Jerry
죄송합니다. (가능한 경우 공통 기본 클래스 또는 인터페이스를 제공 했습니까? 그렇지 않은 경우 속성 설명자로 일부 마법을 되돌려 야하고 모든 인스턴스에 대해 동일한 인스턴스 (PropertyDescriptor의 인스턴스)를 반환해야 할 수도 있습니다. – leppie