2012-08-13 29 views
9

En la imagen siguiente, "MyCars" es una colección. Si la propiedad de un objeto es una colección, en un PropertyGrid, el valor aparece como la cadena "(Colección)" con un botón a la derecha si se selecciona el elemento.Cambiar el valor del elemento de propiedad en PropertyGrid

¿Es posible cambiar el valor "(Colección)"? ¿Si es así, cómo? La razón por la que pregunto es porque he implementado un UITypeEditor personalizado para el objeto que aparecerá en PropertyGrid en mi programa. Hasta el momento, aparece el botón de la derecha, pero el valor del texto es el mismo que el nombre para mostrar de la propiedad. Me gustaría que apareciera una cadena diferente allí.

Example propertygrid.

Editar: para lo que vale, sé que puedo reemplazar el método de PaintValue UITypeEditor y proporcionar un icono, que puede terminar haciendo si no puedo resolver este problema, pero me todavía me gustaría saber si y cómo se puede cambiar el texto "(Colección)".

+0

Creo que aún terminaría con "(Colección)" al lado de su icono si usó el método PaintValue, pero no está seguro. –

Respuesta

7

Este artículo Customized display of collection data in a PropertyGrid podría ser de ayuda.


** ** ACTUALIZACIÓN

Para proporcionar una versión resumida del artículo (en el caso de que el enlace no esté disponible), los pasos involucrados en la personalización de la pantalla y la descripción de los contenidos en una colección PropertyGrid es el siguiente:

  1. Proporcione un descriptor de propiedad personalizado derivando una clase de la clase base abstracta PropertyDescriptor.
  2. Anular métodos y propiedades abstractos. Proporcione una implementación adecuada para el DisplayName y las propiedades de descripción.
  3. Deje que su clase de colección implemente la interfaz ICustomTypeDescriptor.
  4. Devuelve una colección de descriptor de propiedad personalizado por el método GetProperties().
  5. Opcionalmente use TypeConverter objetos derivados proporcionados por .NET o implemente sus propias clases para personalizar la representación textual de sus clases de dominio. Asignarlos a las clases o propiedades apropiadas mediante el uso de la clase TypeConverterAttribute.

globalizar los datos PropertyGrid, descriptores de propiedades pueden ser encadenados (Ver también Globalized property grid).

+1

^¡Esa es la respuesta! –

+1

¡Guau! ¡Eso funciono! ¡Gracias! – kevin628

Cuestiones relacionadas