我想要根据用户的具体选择显示图像。此图像显示为PropertyGrid中的属性。像这样:
问题是我得到了所有这些无关的信息,包括图像右侧的标签(System.Drawing.Bitmap)和它下面的Image属性。有没有办法在最终产品中隐藏这些信息?
更新
我认为包含我正在使用的代码是相关的。
[TypeConverter(typeof(ImagePropertiesConverter))]
public Image Unsupported
{
get
{
Image image = MyProject.Properties.Resources.Unsupported;
return image;
}
}
因此,只有当用户进行的选择不支持他们当前正在处理的内容时,才会显示此属性。如您所见,该属性返回一个图像。我还希望能够设置图像的标签,目前它在PropertyGrid中显示为“System.Drawing.Bitmap”。如果我可以更进一步,我希望能够设置标签的背景颜色。因此“System.Drawing.Bitmap”将显示在红色背景上。我设法摆脱了子属性。
答案 0 :(得分:1)
您可以实现自定义TypeConverter并使用TypeConverter属性标记Image属性。有关示例,请参阅here。
要摆脱System.Drawing.Bitmap,您可以使用这样的代码覆盖TypeConverter中的ConvertTo方法:
public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
{
if (value is Image && destinationType.Equals(typeof(string)))
{
return "Text to replace System.Drawing.Bitmap";
}
else
{
return base.ConvertTo(context, culture, value, destinationType);
}
}