문제

"문자열"값을 보여 주지만 "int"값을 반환하는 Dropdownlist를 PropertyGrid에 표시하고 싶습니다.

예를 들어,이 수업을 받았습니다.

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 Control에서의 수업 사용입니다

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

당신이 볼 수 있듯이, 나는 객체의 ID를 저장하고 싶지만 dropdownlist에 이름을 보여주고 싶습니다 ... 해시 테이블을 사용해 보지만 작동하지 않습니다 ...

BTW- .NET의 3.5 버전을 사용하지만 Winform (WPF가 아님) 만 사용합니다.

도움이 되었습니까?

해결책

이를 위해 getStandardValues를 사용할 수 없습니다. 이 방법은 정수 값을 1, 5 및 10으로 제한 해야하는 경우 유용합니다.

속성 값에 문자열을 표시하려면 TypeConverter의 ConvertTo 및 ConvertFrfffffferffferffer를 무시하면됩니다. PropertyGrid는 드롭 다운 목록에서 변환 된 문자열을 사용합니다.

해시 테이블에 대해, 콘텐츠가 정적 인 경우 타이프 콘버터에 저장할 수 있습니다. 역동적 인 경우 가장 좋은 것은 그리드의 대상 인스턴스가 관리하도록하는 것입니다. 컨버터에서 Typedescriptorcontext.instance 속성을 통해 액세스 할 수 있습니다.

도움이되기를 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top