.NET PropertyGrid DropdownList- 쇼 값과 다른 반환 값
-
09-09-2019 - |
문제
"문자열"값을 보여 주지만 "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 속성을 통해 액세스 할 수 있습니다.
도움이되기를 바랍니다.
제휴하지 않습니다 StackOverflow