2010-05-18 93 views
2

我有一個顯示某些類的屬性的.NET PropertyGrid控件。我想更改一些屬性的顏色或字體或背景顏色(無關緊要,它們看起來與其他顯示的屬性不同)。我可以編寫自定義編輯器,但我想知道我們是否可以更改PropertyGrid中單個屬性的文本/背景顏色

  1. 如果更簡單的方法存在?
  2. 如果我使用自定義編輯器,然後如何更改內置的類型,如BOOL,INT等

感謝

回答

6

沒有做不到的編輯器。確定項目如何繪製的類是PropertyGridView。源代碼是有趣的,它幾乎做到:

private /*protected virtual*/ PropertyGridView CreateGridView(IServiceProvider sp) { 
     return new PropertyGridView(sp, this); 
    } 

不,看起來像在最後一分鐘,他們決定對製作方法重寫。 PropertyGridView類也被標記爲內部。替換所有這些代碼(它有一個批次)是不現實的選擇。

只有通過將[Editor]屬性應用於要編輯的類中的屬性,才能創建自己的UITypeEditor for built-in types。這不是一個通用的解決方案。考慮創建自己的表單來改變對象的可編輯性。

+0

有沒有辦法改變屬性名稱。我想在名稱前面添加「*」來表示例如「* Font」而不是「Font」的區別。我嘗試使用反射,但displayName字段顯示在調試器中,當更改工作時,但我無法從反射中獲取字段。 我使用正確的綁定標誌,即BindingFlags.NonPublic – Charvak 2010-05-18 18:40:41