PropertyGrid控件的默认内置编辑器

时间:2009-04-09 19:37:27

标签: c# editor propertygrid

我似乎无法在任何地方找到答案。默认编辑器/转换器构建到3.5 Framework PropertyGrid控件中。否则我可以抛出哪些对象类型,它能够可靠地显示和编辑?我发现了很多关于使用自定义编辑器的教程(我可能会在某些时候做)。但是现在我的程序中我允许用户创建自己的自定义属性,我想知道我应该允许哪些对象类型,假设他们将在PropertyGrid中编辑它们。

5 个答案:

答案 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,以实现此目的。