2009-02-27 2 views
4

일부 "문자열"값을 표시하지만 "int"값을 반환하는 드롭 다운 목록을 propertygrid에 표시하려고합니다..Net PropertyGrid DropDownList - 표시 값과 다른 반환 값

예를 들어, 내가이 클래스 얻었다 설정할 수 있습니다 : 여기

public class MyObjectOptions : StringConverter 
{ 
    public override bool GetStandardValuesSupported(ITypeDescriptorContext context) 
    { 
     return true; 
    } 

    public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) 
    { 
     MyObjectCollection mm = new MyObjectCollection(); 

     List<String> names = new List<String> 
     foreach (MyObject m in mm) 
     { 
      m.Id // Need to store this somewhere ... 
      names.Add(m.Name); 
     } 

     return new StandardValuesCollection(name); 
    } 

    public override bool GetStandardValuesExclusive(ITypeDescriptorContext context) 
    { 
     return true; 
    } 
} 

는 당신이 볼 수 마찬가지로 PropertyGrid가 제어

public class MyObjectProperty 
{ 
    [TypeConverter(typeof(MyObjectOptions))] 
    public int Id 
    { 
     get { return this.id; } 
     set { this.id = value; } 
    } 
} 

내 클래스의 사용입니다, 나는의 ID를 저장할 개체,하지만 드롭 다운 목록에 이름을 표시하고 싶습니다 ... 해시 테이블을 사용하려고하지만 작동하지 않습니다 ...

BTW - 나는 버전 3.5의 .NET을 사용하지만 WinForm만을 사용합니다. WPF).

답변

2

GetStandardValues를 사용할 수 없습니다. 이 메서드는 정수 값을 1, 5 및 10으로 제한해야하는 경우에 유용합니다.

문자열을 속성 값으로 표시하려면 TypeConverter의 ConvertTo 및 ConvertFrom 메서드를 재정 의하여해야합니다 . PropertyGrid는 드롭 다운 목록에서 변환 된 문자열을 사용합니다.

해시 테이블에 대한 내용이 정적 인 경우 TypeConverter에 저장할 수 있습니다. 동적 인 경우 그리드의 대상 인스턴스에서 관리하는 것이 가장 좋습니다. 변환기에서 TypeDescriptorContext.Instance 속성을 통해 액세스 할 수 있습니다.

희망이 있습니다.