2009-03-11 3 views
1

폼의 모든 컨트롤을 관리하는 데 도움이되는 속성 표가 있습니다. 이러한 컨트롤은 디자이너 유형의 사용자를위한 컨트롤이므로 다른 사용자가 여러 객체를 선택할 때까지는 사용자 인터페이스에 대해별로 신경 쓰지 않습니다.여러 항목을 선택하면 어떻게 사용자 정의 문자열을 표시합니까?

나는 이러한 공통 객체에 "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가에 표시 할 수 있습니까? 지금은 그 필드가 항상 비어 있습니다.

답변

1

. 그러나 샘플에서 umConversion 클래스에 대한 UITypeEditor를 보여줍니다. 그래서, 분명히하십시오.

두 번째 경우, 속성이 실제로 원시 클래스가 아닌 원시 유형 인 경우 Equals 메서드를 구현해야합니다. MS PropertyGrid의 MultiPropertyDescriptorGridEntry 클래스는 Equals를 호출하여 모든 대상 인스턴스의 값이 같은지 여부를 확인합니다. 이것이 당신의 문제인지 확실하지 않지만이 가능성을 없애기 위해 그것을 테스트 할 것입니다.

1

장소 당신이 double 형의 effectiveDiameter에 대해 얘기하는 것 같다 당신의 설명에서 너무 각 속성에 TypeConverter 속성 ..

+0

클래스 자체에 TypeConverter가 있습니다. 그러나 거기에 트릭이 없었는지 확인하기 위해 속성에 TypeConverter (문자열을 /로 변환)를 배치하여 효과가 있는지 확인했습니다. 그렇지 않았습니다. = ( – Jerry

+0

죄송합니다. (가능한 경우 공통 기본 클래스 또는 인터페이스를 제공 했습니까? 그렇지 않은 경우 속성 설명자로 일부 마법을 되돌려 야하고 모든 인스턴스에 대해 동일한 인스턴스 (PropertyDescriptor의 인스턴스)를 반환해야 할 수도 있습니다. – leppie

관련 문제