我似乎无法在任何地方找到答案。默认编辑器/转换器构建到3.5 Framework PropertyGrid控件中。否则我可以抛出哪些对象类型,它能够可靠地显示和编辑?我发现了很多关于使用自定义编辑器的教程(我可能会在某些时候做)。但是现在我的程序中我允许用户创建自己的自定义属性,我想知道我应该允许哪些对象类型,假设他们将在PropertyGrid中编辑它们。
答案 0 :(得分: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
答案 1 :(得分:4)
您可能希望查看从UITypeEditor
派生的类(在System.Drawing.Design
namespace中)。这些类型将作为参数传递给EditorAttribute
(在System.ComponentModel
namespace中)。
您还可以查看该类型的元数据,以查看应用EditorAttribute
的位置。但是,不在这里使用反射,因为这不是PropertyGrid
class使用的。
而是使用TypeDescriptor
class来获取类型属性的属性描述符(调用静态GetProperties
method)。然后,使用PropertyDescriptor
实例,调用GetEditor
method以获取该属性的编辑器实例。
答案 2 :(得分:1)
您实际上可以在PropertyGrid中抛出任何对象。它会自动完成很多事情。如果您希望获得本机提供的特殊编辑体验,则只需创建自定义UI类型编辑器。即使在这种情况下,你按照属性而不是整个对象来做。
答案 3 :(得分:1)
PropertyGrid使用TypeConverters,每种基本类型都有TypeConverters(以及基本类型的集合)。
只要您使用其中一种基本类型或基本类型集合,属性网格就应该能够提供编辑UI。
答案 4 :(得分:1)
除了UITypeEditors之外,PropertyGrid还能够显示任何具有TypeConverter的对象,该对象为CanConvertFrom(String)返回true。您可以为特定对象类型实现自己的TypeConverters,以实现此目的。