2009-04-09 17 views
11

Parece que no puedo encontrar la respuesta a esto en ninguna parte. Qué editores/convertidores predeterminados están incorporando en el control PropertyGrid de Framework 3.5. De lo contrario, ¿qué tipos de objetos puedo arrojar sobre él y poder mostrar y editar de manera confiable? He encontrado muchos tutoriales sobre el uso de editores personalizados (que puedo hacer en algún momento). Pero ahora mismo, en mi programa, le permito al usuario crear sus propias propiedades personalizadas y quiero saber qué tipos de objetos debería permitir, asumiendo que los estarán editando en un PropertyGrid.Editores incorporados predeterminados para el control PropertyGrid

Respuesta

4

Es posible que desee consultar las clases que se derivan de UITypeEditor (en el System.Drawing.Design namespace). Estos tipos se pasarán como parámetros al EditorAttribute (en el System.ComponentModel namespace).

También puede consultar los metadatos del tipo para ver dónde se aplica EditorAttribute. Sin embargo, no use use la reflexión aquí, ya que eso no es lo que usa el PropertyGrid class.

Utilice el TypeDescriptor class para obtener descripciones de propiedad para las propiedades del tipo (llame al GetProperties method estático). Luego, con la instancia PropertyDescriptor, llame al GetEditor method para obtener una instancia del editor para esa propiedad.

1

Puede arrojar cualquier objeto en PropertyGrid. Hará muchas cosas automáticamente. Solo necesita crear editores de tipo de IU personalizados si desea tener una experiencia de edición especial, que no se proporciona de forma nativa. E incluso en ese caso lo haces por propiedad y no por un objeto completo.

+0

Pero, ¿qué es lo que hará automáticamente? En este momento no quiero lidiar con editores personalizados. Probé varios números, string, bool y DateTime y todos funcionan o tienen editores integrados. Esperaba que hubiera una lista en algún lugar de todos los tipos que se pueden editar de manera predeterminada. –

+0

Puede ver la jerarquía de herencia de sus tipos de propiedad si tienen un UITypeEditor adjunto como atributo o no. De forma predeterminada, la cuadrícula de propiedades necesita un editor o un convertidor de tipos para llegar a/desde la cadena. – grover

1

PropertyGrid utiliza TypeConverters y hay TypeConverters para cada tipo de primitiva (así como colecciones de tipos primitivos).

Siempre que utilice uno de los tipos primitivos o una colección de tipos primitivos, la cuadrícula de propiedad debería poder proporcionar una interfaz de usuario de edición.

1

Además de UITypeEditors, PropertyGrid puede mostrar cualquier objeto con un TypeConverter que devuelve verdadero para CanConvertFrom (String). Puede implementar sus propios TypeConverters para tipos de objetos específicos para lograr esto.

7

Tenga en cuenta que hay algunas clases no públicas.

System.Object 
    System.Drawing.Design.UITypeEditor 
    System.ComponentModel.Design.CollectionEditor 
     System.ComponentModel.Design.ArrayEditor 
     System.Web.UI.Design.CollectionEditorBase 
     System.Web.UI.Design.WebControls.WizardStepCollectionEditor 
     System.Web.UI.Design.WebControls.EmbeddedMailObjectCollectionEditor 
     System.Web.UI.Design.WebControls.HotSpotCollectionEditor 
     System.Web.UI.Design.WebControls.ListItemsCollectionEditor 
     System.Web.UI.Design.WebControls.MenuItemStyleCollectionEditor 
     System.Web.UI.Design.WebControls.RoleGroupCollectionEditor 
     System.Web.UI.Design.WebControls.StyleCollectionEditor 
     System.Web.UI.Design.WebControls.SubMenuStyleCollectionEditor 
     System.Web.UI.Design.WebControls.TableCellsCollectionEditor 
     System.Web.UI.Design.WebControls.TableRowsCollectionEditor 
    System.ComponentModel.Design.BinaryEditor 
    System.ComponentModel.Design.DateTimeEditor 
    System.ComponentModel.Design.MultilineStringEditor 
    System.ComponentModel.Design.ObjectSelectorEditor 
    System.Windows.Forms.Design.AnchorEditor 
    System.Windows.Forms.Design.BorderSidesEditor 
    System.Windows.Forms.Design.DockEditor 
    System.Windows.Forms.Design.FileNameEditor 
    System.Windows.Forms.Design.FolderNameEditor 
    System.Windows.Forms.Design.ShortcutKeysEditor 
    System.Web.UI.Design.ConnectionStringEditor 
    System.Web.UI.Design.DataBindingCollectionEditor 
    System.Web.UI.Design.ExpressionsCollectionEditor 
    System.Web.UI.Design.UrlEditor 
    System.Web.UI.Design.XmlFileEditor 
    System.Web.UI.Design.WebControls.DataGridColumnCollectionEditor 
    System.Web.UI.Design.WebControls.DataControlFieldTypeEditor 
    System.Web.UI.Design.WebControls.MenuBindingsEditor 
    System.Web.UI.Design.WebControls.MenuItemCollectionEditor 
    System.Web.UI.Design.WebControls.ParameterCollectionEditor 
    System.Web.UI.Design.WebControls.RegexTypeEditor 
    System.Web.UI.Design.WebControls.TreeNodeCollectionEditor 
    System.Web.UI.Design.WebControls.TreeViewBindingsEditor 
    System.Web.UI.Design.WebControls.DataPagerFieldTypeEditor 
    System.Messaging.Design.QueuePathEditor 
    System.Drawing.Design.ImageEditor 
    System.Drawing.Design.ColorEditor 
    System.Drawing.Design.ContentAlignmentEditor 
    System.Drawing.Design.CursorEditor 
    System.Drawing.Design.FontEditor 
    System.Drawing.Design.FontNameEditor 
    System.Drawing.Design.IconEditor 
    System.Workflow.ComponentModel.Design.TypeBrowserEditor 
    System.Workflow.ComponentModel.Design.BindUITypeEditor 
Cuestiones relacionadas