我似乎无法在任何地方找到答案。 3.5框架PropertyGrid控件中构建了哪些默认编辑器/转换器。否则,我可以抛出哪些对象类型,并且能够可靠地显示和编辑?我发现了很多关于使用自定义编辑器的教程(我可能在某些时候会这样做)。但现在在我的程序中,我允许用户创建自己的自定义属性,我想知道我应该允许哪些对象类型,假设他们将在PropertyGrid中编辑它们。PropertyGrid控件的默认内置编辑器
11
A
回答
4
你可能想看看是派生从UITypeEditor
(在System.Drawing.Design
namespace)班。这些类型将作为参数传递给EditorAttribute
(在System.ComponentModel
namespace中)。
您也可以看看元数据,看看应用EditorAttribute
类型。但是,不要在这里使用反射,因为这不是什么PropertyGrid
class使用。
而是使用TypeDescriptor
class来获取类型属性的属性描述符(称为静态GetProperties
method)。然后,使用PropertyDescriptor
实例,调用GetEditor
method以获取该属性的编辑器实例。
1
实际上,你可以在PropertyGrid中抛出任何对象。它会自动完成很多事情。如果你想有一个特殊的编辑体验,那么你只需要创建自定义的UI类型编辑器。即使在这种情况下,你也是按照属性来做,而不是为了整个对象。
1
PropertyGrid中使用类型转换器和存在用于每个原语类型类型转换器(以及原始类型的集合)。
只要你使用的基本类型的一个或原始类型的集合属性网格应该能够采取提供编辑UI的照顾。
1
此外UITypeEditors,PropertyGrid中能够与用于CanConvertFrom(字符串)返回true的TypeConverter,以显示任何对象。您可以为特定的对象类型实现自己的TypeConverters,以完成此操作。
7
请记住,有一些非公开课。
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
但是它会自动执行的所有事情是什么?现在我不想处理自定义编辑。我已经尝试了各种数字,字符串,布尔和日期时间,他们都工作或编译器内置。我希望有一个列表可以默认编辑的所有类型的列表。 – 2009-04-09 19:45:22