2009-09-17 12 views
17

Mi sento un idiota per essere stato sconcertato da questo, sento che la risposta deve essere ovvia. Ma, ahimè, dopo aver passato troppo tempo a guardare attraverso l'Object Browser e Googling, vengo in cerca di aiuto.PropertyGrid - Nomi proprietà personalizzate?

Ho una classe che utilizzo in un PropertyGrid. Ho scoperto che impostando CategoryAttribute su ogni proprietà crea una nuova categoria per ogni oggetto, ovviamente. Questo imposta la mia griglia di proprietà per avere un [+] per ogni elemento con il mio nome personalizzato in esso, e questo non è il comportamento che sto cercando di ottenere.

In Visual Studio, se si fa clic su un elemento in Esplora soluzioni, ad esempio un assieme, ha zero nodi albero e solo un elenco di proprietà con nome perfetto, ovvero qualsiasi stringa può identificare una proprietà, non solo il il nome dell'oggetto Così, invece di avere questo:

[+ File Path]
        FilePath | propertyValue
[+ Dimensioni file]
        Dimensioni file | 0 KB

sto cercando questo:

[+ File]
        File Path | valore
        Dimensioni file | 0 KB

O anche il precedente senza il nodo [+] iniziale. Ho riversato lo spazio dei nomi System.ComponentModel alla ricerca di un attributo applicabile ma non riesco a trovarne uno.

Come posso ottenere questo effetto? Deve essere possibile, Visual Studio lo fa e credo che siano lo stesso componente, non uno derivato ed esteso.

Grazie! -Eric

risposta

38

Utilizzare il DisplayNameAttribute per cambiare la visualizzazione del testo (renderlo più leggibile), il DescriptionAttribute per aggiungere testo di aiuto alla proprietà, e il CategoryAttribute per raggruppare le proprietà ..

using System.ComponentModel; 

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

è anche possibile utilizzare l'attributo Descrizione per fornire all'utente una descrizione più lunga. – JDunkerley

+0

Grazie mille :) Lifesaver. +1 –

9

Avrai voglia di avere CategoryAttribute impostato su "File" per entrambe le proprietà:

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

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

vi consiglio di leggere "Getting the most out of the .NET Property Grid Control" per altre idee che è possibile utilizzare per organizzare le vostre proprietà, comprese le descrizioni aggiunta .

+1

Hai fatto perdere il bit circa il nome visualizzato (esempio nella mia risposta se si desidera aggiungerlo) –

+1

Sì, questo risolve metterli sotto un albero ma avevo bisogno dell'attributo DisplayName dalla risposta selezionata. Grazie comunque! : D –

Problemi correlati