2009-09-17 21 views
17

Me siento como un idiota por quedar perplejo por esto, siento que la respuesta debe ser obvia. Pero, por desgracia, después de pasar demasiado tiempo mirando el Object Browser y Google, voy en busca de ayuda.PropertyGrid - ¿Nombres de propiedad personalizados?

Tengo una clase que utilizo en un PropertyGrid. Descubrí que al establecer CategoryAttribute en cada propiedad, crea una nueva categoría para cada elemento, obviamente. Esto establece que mi cuadrícula de propiedades tenga un [+] para cada elemento con mi nombre personalizado, y este no es el comportamiento que intento lograr.

En Visual Studio, si hace clic en un elemento en el Explorador de soluciones, por ejemplo, tiene cero nodos de árbol y solo una lista de propiedades con nombre perfecto, es decir, cualquier cadena puede identificar una propiedad, no solo el el nombre del objeto Así que en lugar de tener presente:

[Ruta archivo +]
        FilePath | propertyValue
[+ Tamaño de archivo]
        Tamaño de archivo | 0 KB

Busco esto:

[+ Archivo]
        Ruta del archivo | valor
        Tamaño del archivo | 0 KB

O incluso lo anterior sin el nodo inicial [+]. He recorrido el espacio de nombres System.ComponentModel buscando un atributo aplicable pero no puedo encontrar uno.

¿Cómo puedo lograr este efecto? Debe ser posible, Visual Studio lo hace y creo que son el mismo componente, no derivado y extendido.

Gracias! -Eric

Respuesta

38

Uso del DisplayNameAttribute para cambiar lo muestra el texto (que sea más legible), la DescriptionAttribute para añadir texto de ayuda a la propiedad, y el grupo CategoryAttribute a las propiedades ..

using System.ComponentModel; 

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

También puede usar el atributo Descripción para proporcionar una descripción más larga al usuario – JDunkerley

+0

Muchas gracias :) Salvavidas. +1 –

9

Usted querrá tener CategoryAttribute conjunto a "Archivo" para ambas propiedades:

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

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

recomiendo la lectura de "Getting the most out of the .NET Property Grid Control" para otras ideas que puede utilizar para organizar sus propiedades, incluyendo la adición de descripciones .

+1

has hecho perder el bit sobre el nombre para mostrar (muestra en mi respuesta si desea agregarlo) –

+1

Sí, esto resuelve ponerlos bajo un árbol, pero necesitaba el atributo DisplayName de la respuesta seleccionada. ¡Gracias, sin embargo! : D –

Cuestiones relacionadas