我似乎找不到这个问题的答案。3.5框架的PropertyGrid控件内置了哪些默认编辑器/转换器?否则,我可以使用哪些对象类型并且它能够可靠地显示和编辑?我已经发现很多关于使用自定义编辑器的教程(在某些时候我可能会用到),但是现在在我的程序中,我允许用户创建自己的自定义属性,我想知道应该允许哪些对象类型,假设他们将在PropertyGrid中进行编辑。
我似乎找不到这个问题的答案。3.5框架的PropertyGrid控件内置了哪些默认编辑器/转换器?否则,我可以使用哪些对象类型并且它能够可靠地显示和编辑?我已经发现很多关于使用自定义编辑器的教程(在某些时候我可能会用到),但是现在在我的程序中,我允许用户创建自己的自定义属性,我想知道应该允许哪些对象类型,假设他们将在PropertyGrid中进行编辑。
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
UITypeEditor
(在System.Drawing.Design
命名空间中)派生的类。这些类型将作为参数传递给EditorAttribute
(在System.ComponentModel
命名空间中)。
您还可以查看类型的元数据,以查看EditorAttribute
应用的位置。但是,在此处不要使用反射,因为这不是PropertyGrid
类的使用方式。
相反地,请使用TypeDescriptor
类获取类型上属性的属性描述符(调用静态GetProperties
方法)。然后,使用PropertyDescriptor
实例调用GetEditor
方法获取该属性的编辑器实例。
实际上,您可以将任何对象投掷到PropertyGrid中。它会自动执行许多操作。如果您想要特殊的编辑体验,而本地提供的功能无法满足您的需求,则只需要创建自定义UI类型编辑器。即使在这种情况下,您也是针对每个属性进行操作,而不是整个对象。
PropertyGrid使用TypeConverters,每个原始类型(以及原始类型的集合)都有对应的TypeConverters。
只要使用其中一种原始类型或原始类型的集合,属性网格就应该能够负责提供编辑UI。