-1

我有一张我想根据用户做出的特定选择显示的图像。此图像显示为 PropertyGrid 中的一个属性。像这样:

截屏

问题是我得到了所有这些无关的信息,包括图像右侧的标签(System.Drawing.Bitmap)和它下面的图像属性。有没有办法在最终产品中隐藏这些信息?

更新:

我认为包含我正在使用的代码是相关的。

[TypeConverter(typeof(ImagePropertiesConverter))]
public Image Unsupported
{
    get
    {
        Image image = MyProject.Properties.Resources.Unsupported;
        return image;
    }
}

因此,仅当用户做出他们当前正在处理的内容不支持的选择时,才会显示此属性。如您所见,该属性返回图像。我还希望能够设置图像的标签,目前它在 PropertyGrid 中显示为“System.Drawing.Bitmap”。如果我可以更进一步,我希望能够设置标签的背景颜色。所以“System.Drawing.Bitmap”会出现在红色背景上。我已经设法摆脱了子属性。

4

1 回答 1

1

您可以实现自定义 TypeConverter 并使用 TypeConverter 属性标记 Image 属性。有关示例,请参见此处。

要摆脱 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);
        }
    }
于 2013-03-07T16:35:56.170 回答