C# 在PropertyGrid中隐藏图像的属性

C# 在PropertyGrid中隐藏图像的属性,c#,visual-studio,visual-studio-2005,propertygrid,C#,Visual Studio,Visual Studio 2005,Propertygrid,我有一个图像,我想根据用户的具体选择来显示。此图像显示为PropertyGrid中的属性。像这样: 问题是我获取了所有这些无关的信息,包括图像右侧的标签(System.Drawing.Bitmap)及其下面的图像属性。有没有办法在最终产品中隐藏这些信息 更新: 我想应该包括我正在使用的代码 [TypeConverter(typeof(ImagePropertiesConverter))] public Image Unsupported { get { Imag

我有一个图像,我想根据用户的具体选择来显示。此图像显示为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”将显示在红色背景上。我已经设法摆脱了子属性。

您可以实现一个自定义的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);
        }
    }

如果只是不希望PropertyGrid中的image属性,可以通过将BrowsableAttribute设置为false来隐藏它。这就是你想要的还是你想隐藏加法子属性?@SpaceghostAli我想隐藏子属性(所以大红色框中的所有内容,甚至右边的标签)。仅当用户在属性网格中做出特定选择时,显示图像本身的属性才会显示。这正是我想要做的,非常感谢!我还有一个问题。我仍然无法摆脱标签(System.Drawing.Bitmap)。这可能吗?是的,你可以,但我不记得确切的方法,我认为你需要重写TypeConverter中的ConvertToString方法。我将不得不挖掘一些旧代码,以获得详细信息,添加到我的回答中。谢谢你,我在搜索谷歌时急切地等待你的回复P