簡體   English   中英

PropertyGrid控件的默認內置編輯器

[英]Default built-in editors for the PropertyGrid control

我似乎無法在任何地方找到答案。 默認編輯器/轉換器構建到3.5 Framework PropertyGrid控件中。 否則我可以拋出哪些對象類型,它能夠可靠地顯示和編輯? 我發現了很多關於使用自定義編輯器的教程(我可能會在某些時候做)。 但是現在我的程序中我允許用戶創建自己的自定義屬性,我想知道我應該允許哪些對象類型,假設他們將在PropertyGrid中編輯它們。

請記住,有一些非公開課。

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

您可能希望查看從UITypeEditor派生的類(在System.Drawing.Design命名空間中 )。 這些類型將作為參數傳遞給EditorAttribute (在System.ComponentModel命名空間中 )。

您還可以查看類型的元數據以查看EditorAttribute的應用位置。 但是, 不要在這里使用反射,因為這不是PropertyGrid使用的。

而是使用TypeDescriptor來獲取類型屬性的屬性描述符(調用靜態GetProperties方法 )。 然后,使用PropertyDescriptor實例,調用GetEditor方法以獲取該屬性的編輯器實例。

除了UITypeEditors之外,PropertyGrid還能夠顯示任何具有TypeConverter的對象,該對象為CanConvertFrom(String)返回true。 您可以為特定對象類型實現自己的TypeConverters,以實現此目的。

您實際上可以在PropertyGrid中拋出任何對象。 它會自動完成很多事情。 如果您希望獲得本機提供的特殊編輯體驗,則只需創建自定義UI類型編輯器。 即使在這種情況下,你按照屬性而不是整個對象來做。

PropertyGrid使用TypeConverters,每種基本類型(以及基本類型的集合)都有TypeConverters。

只要您使用其中一種基本類型或基本類型集合,屬性網格就應該能夠提供編輯UI。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM