12

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

4

5 回答 5

8

请记住,有一些非公开课程。

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
于 2010-02-23T12:25:06.293 回答
6

您可能想查看派生自UITypeEditor(在System.Drawing.Design命名空间中)的类。这些类型将作为参数传递给EditorAttribute(在System.ComponentModel命名空间中)。

您还可以查看该类型的元数据以查看EditorAttribute应用的位置。但是,不要在这里使用反射,因为这不是PropertyGrid使用的。

而是使用TypeDescriptor来获取类型上的属性的属性描述符(调用静态GetProperties方法)。然后,使用该PropertyDescriptor实例,调用该GetEditor方法以获取该属性的编辑器实例。

于 2009-04-09T19:47:23.703 回答
1

您实际上可以在 PropertyGrid 中抛出任何对象。它会自动做很多事情。如果您想拥有特殊的编辑体验,您只需要创建自定义 UI 类型编辑器,这不是本机提供的。即使在这种情况下,您也可以针对每个属性而不是针对整个对象执行此操作。

于 2009-04-09T19:40:50.707 回答
1

PropertyGrid 使用 TypeConverters,每个原始类型(以及原始类型的集合)都有 TypeConverters。

只要您使用原始类型之一或原始类型集合,属性网格就应该能够提供编辑 UI。

于 2009-04-09T19:55:18.427 回答
1

除了 UITypeEditors,PropertyGrid 还能够显示任何具有 TypeConverter 的对象,该类型转换器为 CanConvertFrom(String) 返回 true。您可以为特定对象类型实现自己的 TypeConverters 以完成此操作。

于 2009-09-14T15:33:38.603 回答