PropertyGrid 控件的默认内置编辑器
-
09-09-2019 - |
题
我似乎无法在任何地方找到这个问题的答案。3.5 Framework PropertyGrid 控件中内置了哪些默认编辑器/转换器。否则我可以向它扔什么对象类型并且它能够可靠地显示和编辑?我发现了很多关于使用自定义编辑器的教程(我可能会在某个时候这样做)。但现在在我的程序中,我允许用户创建自己的自定义属性,并且我想知道假设他们将在 PropertyGrid 中编辑它们,我应该允许哪些对象类型。
解决方案
您可能想看看派生自的类 UITypeEditor
(在里面 System.Drawing.Design
名称空间)。这些类型将作为参数传递给 EditorAttribute
(在里面 System.ComponentModel
名称空间).
您还可以查看该类型的元数据以了解该类型的位置 EditorAttribute
被申请;被应用。然而, 不要 在这里使用反射,因为这不是 PropertyGrid
班级 用途。
而是使用 TypeDescriptor
班级 获取类型属性的属性描述符(调用静态 GetProperties
方法)。然后,随着 PropertyDescriptor
实例,调用 GetEditor
方法 获取该属性的编辑器实例。
其他提示
记住,有一些非公共类。
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
实际上,你可以扔在PropertyGrid中的任何物体。它会自动做很多事情。你只需要创建自定义的UI类型编辑器,如果你想有一个特殊的编辑体验,这本身并不提供。即使在这种情况下,你做的每财产而不是整个对象。
在PropertyGrid中使用类型转换器和存在用于每个原语类型类型转换器(以及原始类型的集合)。
只要您使用的基本类型的一个或原始类型的集合作为属性网格应该能够采取提供编辑UI的照顾。
此外UITypeEditors,PropertyGrid中能够与用于返回CanConvertFrom(字符串)真实的TypeConverter,以显示任何对象。你可以实现你自己的特定对象类型的类型转换器,以实现这一目标。