2009-04-09 61 views
11

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

回答

4

你可能想看看是派生從UITypeEditor(在System.Drawing.Design namespace)班。這些類型將作爲參數傳遞給EditorAttribute(在System.ComponentModel namespace中)。

您也可以看看元數據,看看應用EditorAttribute類型。但是,不要在這裏使用反射,因爲這不是什麼PropertyGrid class使用。

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

1

實際上,你可以在PropertyGrid中拋出任何對象。它會自動完成很多事情。如果你想有一個特殊的編輯體驗,那麼你只需要創建自定義的UI類型編輯器。即使在這種情況下,你也是按照屬性來做,而不是爲了整個對象。

+0

但是它會自動執行的所有事情是什麼?現在我不想處理自定義編輯。我已經嘗試了各種數字,字符串,布爾和日期時間,他們都工作或編譯器內置。我希望有一個列表可以默認編輯的所有類型的列表。 – 2009-04-09 19:45:22

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