2013-03-07 78 views
-1

我有一張圖像,我想根據用戶所做的特定選擇來顯示。該圖像顯示爲PropertyGrid中的一個屬性。就像這樣:在PropertyGrid中隱藏圖像的屬性

screenshot

的問題是,我得到這一切無關的信息,包括標籤的圖像(System.Drawing.Bitmap)和它下面的圖像屬性的權利。有沒有辦法在最終產品中隱藏這些信息?

UPDATE:

我想這將是相關的,包括我的工作的代碼。

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

所以這個屬性僅在用戶選擇不支持他們當前正在處理的內容時顯示。正如你可以看到該屬性返回一個圖像。我還希望能夠設置圖像的標籤,目前它在PropertyGrid中顯示爲「System.Drawing.Bitmap」。如果我能更進一步,我希望能夠設置標籤的背景顏色。所以「System.Drawing.Bitmap」會顯示在紅色背景上。我設法擺脫了子屬性。

+0

如果你只是不想PropertyGrid中的你可以將圖像屬性通過將BrowsableAttribute設置爲false來隱藏它。那是你想要的還是你想隱藏加法子屬性? – SpaceghostAli 2013-03-07 16:01:47

+0

@SpaceghostAli我想隱藏子屬性(所以一切在大紅色的盒子,甚至標籤在右邊)。僅當用戶在屬性網格中進行特定選擇時,纔會顯示顯示圖像本身的屬性。 – Fam 2013-03-07 16:26:05

回答

1

您可以實現一個自定義的TypeConverter並使用TypeConverter屬性標記Image屬性。以here爲例。

爲了擺脫System.Drawing.Bitmap你使用像這樣的代碼重寫的ConvertTo方法在您的TypeConverter:

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); 
     } 
    } 
+0

這正是我想要做的,非常感謝你!我只有一個問題。我仍然無法擺脫標籤(System.Drawing.Bitmap)。那可能嗎? – Fam 2013-03-07 16:53:32

+0

是的,你可以但我不記得具體如何,我認爲你需要覆蓋TypeConverter中的ConvertToString方法。我將不得不挖掘一些舊代碼,以獲取詳細信息以添加到我的回答中 – SpaceghostAli 2013-03-07 17:02:49

+0

謝謝,我熱切地等待您的回覆,因爲我自己搜索Google。 :P – Fam 2013-03-07 17:18:14