2009-09-17 82 views
17

我覺得自己被這個難住了,我覺得答案一定是顯而易見的。但是,唉,在花費太多時間瀏覽對象瀏覽器和谷歌搜索之後,我會尋求幫助。PropertyGrid - 自定義屬性名稱?

我有一個我在PropertyGrid中使用的類。我發現通過在每個屬性上設置CategoryAttribute,它顯然會爲每個項目創建一個新類別。這設置我的屬性網格有一個[+]爲每個項目與我的自定義名稱,這不是我想要實現的行爲。

在Visual Studio中,如果你點擊在Solution Explorer中的項目,比如,裝配,它具有零個樹節點,只是一個完美命名的屬性列表,即任何字符串能夠識別的屬性,而不僅僅是對象的名字。因此,不是有這樣的:

[+文件路徑]
       文件路徑| propertyValue
[+文件大小]
        FileSize | 0 KB

我在尋找這樣的:

[+文件]
       文件路徑|值
       文件大小| 0 KB

甚至上面沒有初始[+]節點。我傾注了System.ComponentModel命名空間尋找一個適用的屬性,但我找不到一個。

我該如何達到這個效果?它必須是可能的,Visual Studio做到了,我相信它們是相同的組件,而不是派生的和擴展的組件。

謝謝! -Eric

回答

38

使用DisplayNameAttribute改變什麼文本顯示(使其更可讀),將DescriptionAttribute來幫助文本添加到屬性和CategoryAttribute到組的屬性..

using System.ComponentModel; 

[Category("Test")] 
[DisplayName("Test Property")] 
[Description("This is the description that shows up")] 
public string TestProperty {get;set;} 
+3

你也可以使用Description屬性爲用戶提供更長的描述 – JDunkerley 2009-09-17 19:43:36

+0

非常感謝:)救命啊。 +1 – 2009-09-17 19:51:29

9

你想擁有一套CategoryAttribute「文件」這兩個屬性:

[Category("File")] 
public string FilePath { get; set;} 

[Category("File")] 
public int FileSize { get; set;} 

我建議你閱讀「Getting the most out of the .NET Property Grid Control」你可以使用你的組織性能,包括添加描述其他的想法。

+1

你做錯過的位關於顯示名稱(示例在我的回覆中,如果你想添加它) – 2009-09-17 19:41:53

+1

是的,這解決了把它們放在一棵樹下,但我需要所選答案的DisplayName屬性。不過謝謝! :D – 2009-09-17 19:52:11

相關問題