Editores integrados predeterminados para el control PropertyGrid
-
09-09-2019 - |
Pregunta
Parece que no puedo encontrar la respuesta a esto en ninguna parte.Qué editores/convertidores predeterminados están integrados en el control PropertyGrid del marco 3.5.De lo contrario, ¿qué tipos de objetos puedo lanzarle y poder mostrarlos y editarlos de manera confiable?Encontré muchos tutoriales sobre el uso de editores personalizados (que quizás haga en algún momento).Pero ahora mismo en mi programa estoy permitiendo al usuario crear sus propias propiedades personalizadas y quiero saber qué tipos de objetos debo permitir suponiendo que los editarán en un PropertyGrid.
Solución
Es posible que desee echar un vistazo a las clases que se derivan de UITypeEditor
(en el System.Drawing.Design
espacio de nombres).Estos tipos se pasarán como parámetros al EditorAttribute
(en el System.ComponentModel
espacio de nombres).
También puede consultar los metadatos del tipo para ver dónde EditorAttribute
Está aplicado.Sin embargo, no Utilice la reflexión aquí, ya que eso no es lo que el PropertyGrid
clase usos.
Más bien usa el TypeDescriptor
clase para obtener descriptores de propiedad para las propiedades del tipo (llame al método estático GetProperties
método).Entonces, con el PropertyDescriptor
ejemplo, llame al GetEditor
método para obtener una instancia del editor para esa propiedad.
Otros consejos
Tenga en cuenta que hay algunas clases que no son 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
En realidad se puede tirar cualquier objeto en el PropertyGrid. Se va a hacer un montón de cosas de forma automática. Sólo es necesario para crear editores tipo de interfaz de usuario personalizado, si usted quiere tener una experiencia de edición especial, que no está previsto de forma nativa. E incluso en ese caso, lo hace por propiedad y no para todo el objeto.
El PropertyGrid utiliza TypeConverters y hay TypeConverters para cada tipo primitivo (así como colecciones de tipos primitivos).
Mientras usted está utilizando uno de los tipos primitivos o una colección de tipos primitivos de la cuadrícula de propiedades debería ser capaz de cuidar de proporcionar una interfaz de usuario de edición.
Además UITypeEditors, la PropertyGrid es capaz de mostrar cualquier objeto con una TypeConverter que devuelve cierto para CanConvertFrom (String). Se puede implementar sus propias TypeConverters para tipos de objetos específicos con el fin de lograr esto.