Usos interesantes del PropertyGrid

Hola!

Uno de los controles menos utilizados (generalmente) del framework de .NET es el PropertyGrid. Estamos aburridos de verlo, ya que el visor de Propiedades del propio Visual Studio es un PropertyGrid, pero en general pocos son conscientes de que lo pueden utilizar. Este control no es una alternativa a usar pantallas de entrada de datos, pero sí que puede venir bien cuando se tiene que realizar una aplicación interna, como método sencillo para actualizar los objetos que tenemos que manipular.

En este artículo vamos a ver un poco su manejo, y cómo podemos etiquetar mediante atributos las clases para que al mostrarse objetos en el PropertyGrid nos muestren textos de ayuda, el nombre que nosotros queramos, etc…

Los atributos que vamos a utilizar para estos menesteres están definidos en el espacio de nombres System.ComponentModel. Pero lo primero es ver un poco cómo funciona este control. En un formulario, si añadimos un control PropertyGrid, y le asginamos un objeto de una clase cualquiera usando la propiedad SelectedObject, veremos todas las propiedades de dicho objeto. Y para muestra un botón:

Como podemos ver en la imagen, el control extrae todas las propiedades del objeto, y las muestra. Además, nos permite editar los valores, y actualiza el objeto automáticamente. Dependiendo del tipo de datos nos muestra diferentes editores, como un calendario para nuestra propiedad FechaNac, que es de tipo DateTime, o casa de texto para los strings.

Si queremos dar un poco más de información al usuario, podemos utilizar los siguientes atributos:

  • System.ComponentModel.DisplayNameAttribute: Mediante este atributo le indicamos al grid el nombre que debe utilizar para la propiedad a la que se le aplica. Si no se especifica, el control tomará el nombre de la propiedad.
  • System.ComponentModel.DescriptionAttribute: Mediante este atributo le podemos indicar al grid la descripción que mostrará en la parte inferior del control cuando la propiedad esté seleccionada.
  • System.ComponentModel.CategoryAttribute: Mediante este atributo le indicamos la categoría a la que pertenece la propiedad. Por defecto pertenece a la categoría Misc.
  • System.ComponentModel.BrowsableAttribute: Mediante este atributo le indicamos si queremos que sea visible o no en las propiedades. Por defecto es true.

Lo interesante de estos atributos es que no sólo aplican al PropertyGrid, también los utiliza el propio diseñador de Visual Studio, con lo que si los aplicamos a controles de usuario, al utilizarlos en los formularios tendremos las descripciones disponibles, y las categorías que nosotros definamos aparecerán también.

La pinta que tendría después de aplicarle los atributos es la siguiente:

Bueno, pues nada más. En una segunda parte comentaré cómo se pueden crear editores personalizados para las propiedades (y el PropertyGrid), ya que como comprobaréis pronto, si tenéis un objeto con propiedades de un tipo que no tengan editor definido, el PropertyGrid no sabrá qué hacer con ellos [;)]

¡Ojo! Es muy goloso es usar esto para todo… Pero no lo hagáis… Un usuario medio normalmente no sabrá muy bien cómo manejar este engendro, pero sí es muy recomendable si estáis realizando alguna herramienta interna 🙂

Saludos!

El código fuente…

2 comentarios en “Usos interesantes del PropertyGrid”

  1. Hola… tengo una duda sobre el propertyGrid…
    Sabes como puedo hacer para que el tamaño de la columna de las propiedades sea dinámico??? estoy teniendo problemas con eso.

    Muy lindo tu articulo

    Gracias!!!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *