.NET PropertyGrid中的DropDownList - 从显示值不同的返回值
-
09-09-2019 - |
题
我希望能够在PropertyGrid中显示一个下拉列表,显示一些“字符串”值,但返回“INT”值。
例如,让设定我得到这个类:
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,但是我想表明它在下拉列表的名字......我尝试使用哈希表,但它不工作...
顺便说一句 - 我使用的净3.5版本,但我只使用的WinForm(未WPF)
。解决方案
您不能使用该GetStandardValues。如果你不得不限制您的整数值假设1,5和10这种方法将是有益的。
如果你想显示在你的属性值的字符串,你只需要重写您的TypeConverter的的ConvertTo和ConvertFrom方法。 PropertyGrid中将使用转换的字符串在下拉列表中。
关于你的哈希表,您可以在如果它的内容是静态存储在您的TypeConverter。如果它是动态的,最好是让网格的目标实例对其进行管理。从你的转换器,你就可以通过TypeDescriptorContext.Instance属性来访问它。
希望有所帮助。
不隶属于 StackOverflow