Встроенные редакторы по умолчанию для элемента управления PropertyGrid
Я не могу найти ответ на этот вопрос нигде. Какие Редакторы/преобразователи по умолчанию строятся в 3.5 Framework PropertyGrid control. В противном случае какие типы объектов я могу бросить на него, и он сможет надежно отображать и редактировать? Я нашел много учебников по использованию пользовательских редакторов (что я могу сделать в какой-то момент). Но прямо сейчас в моей программе я разрешаю пользователю создавать свои собственные пользовательские свойства, и я хочу знать, какие типы объектов я должен разрешить, предполагая, что они будут их редактировать в компонент PropertyGrid.
5 ответов
возможно, вы захотите взглянуть на классы, производные от UITypeEditor
(в System.Drawing.Design
пространство имен). Эти типы будут переданы в качестве параметров в EditorAttribute
(в System.ComponentModel
пространство имен).
вы также можете посмотреть метаданные для типа, чтобы увидеть, где это. Однако,не использовать отражение здесь, так как это не то, что PropertyGrid
класс использует.
лучше использовать TypeDescriptor
класс чтобы получить дескрипторы свойств для свойств типа (вызовите static GetProperties
метод). Затем с помощью PropertyDescriptor
например, вызов GetEditor
метод чтобы получить экземпляр редактора для этого свойства.
имейте в виду, что есть некоторые непубличные классы.
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
вы можете фактически бросить любой объект в PropertyGrid. Он многое делает автоматически. Вам нужно только создать пользовательские Редакторы типов пользовательского интерфейса, если вы хотите иметь специальный опыт редактирования, который изначально не предоставляется. И даже в этом случае вы делаете это за собственность, а не за весь объект.
PropertyGrid использует TypeConverters и есть TypeConverters для каждого примитивного типа (а также коллекции примитивных типов).
пока вы используете один из примитивных типов или коллекцию примитивных типов, сетка свойств должна иметь возможность позаботиться о предоставлении пользовательского интерфейса редактирования.
помимо UITypeEditors, PropertyGrid может отображать любой объект с помощью TypeConverter, который возвращает true для CanConvertFrom (String). Вы можете реализовать свой собственный TypeConverters для конкретных типов объектов для того, чтобы достичь этого.