2009-09-17 4 views
17

Je me sens comme un idiot d'être perplexe par cela, je me sens comme la réponse doit être évidente. Mais, hélas, après avoir passé trop de temps à parcourir le navigateur d'objets et Google, je viens chercher de l'aide.PropertyGrid - Noms de propriétés personnalisées?

J'ai une classe que j'utilise dans un PropertyGrid. J'ai trouvé qu'en définissant CategoryAttribute sur chaque propriété, il crée une nouvelle catégorie pour chaque élément, évidemment. Cela définit ma grille de propriété pour avoir un [+] pour chaque élément avec mon nom personnalisé, et ce n'est pas le comportement que j'essaie d'atteindre. Dans Visual Studio, si vous cliquez sur un élément dans l'Explorateur de solutions, disons, un assemblage, il a zéro nœud d'arbre et une liste de propriétés parfaitement nommées, c'est-à-dire que toute chaîne peut identifier une propriété, pas seulement nom de l'objet Ainsi, au lieu d'avoir ceci:

[+ Chemin du fichier]
        CheminFichier | propertyValue
[+ Taille du fichier]
        FileSize | 0 KB

Je cherche ceci:

[+ fichier]
        Chemin du fichier | valeur
        Taille du fichier | 0 KB

Ou même ce qui précède sans le nœud [+] initial. J'ai traversé l'espace de noms System.ComponentModel à la recherche d'un attribut applicable mais je ne peux pas en trouver un.

Comment puis-je obtenir cet effet? Cela doit être possible, Visual Studio le fait et je crois qu'ils sont le même composant, pas un dérivé et étendu.

Merci! -Eric

Répondre

38

Utilisez le DisplayNameAttribute pour modifier ce texte affiche (rendre plus lisible par l'homme), le DescriptionAttribute pour ajouter du texte d'aide à la propriété, et le CategoryAttribute pour regrouper les propriétés ..

using System.ComponentModel; 

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

vous pouvez également utiliser l'attribut Description pour fournir une description plus longue à l'utilisateur – JDunkerley

+0

Merci beaucoup :) Gareautrain. +1 –

9

Vous voulez avoir CategoryAttribute réglé sur « Fichier » pour les deux propriétés:

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

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

Je recommande la lecture « Getting the most out of the .NET Property Grid Control » pour d'autres idées que vous pouvez utiliser pour organiser vos propriétés, y compris l'ajout de descriptions .

+1

Vous avez manquez le bit à propos du nom d'affichage (exemple dans ma réponse si vous voulez l'ajouter) –

+1

Oui, cela résout de les mettre sous un arbre, mais j'avais besoin de l'attribut DisplayName de la réponse sélectionnée. Merci quand même! : D –

Questions connexes