Standard integrierte Editoren für die Propertysteuer
-
09-09-2019 - |
Frage
Ich kann nicht scheinen, die Antwort auf diese überall zu finden. Welche Standardeditoren / Konverter bauen in 3.5 Framework Property Kontrolle. Ansonsten welche Objekttypen kann ich an ihn werfen und es in der Lage sein, zuverlässig zu zeigen und bearbeiten? Ich habe eine Menge von Tutorials zur Verwendung von benutzerdefinierten Editoren (die ich irgendwann tun kann). Aber gerade jetzt in meinem Programm Ich bin so dass der Benutzer ihre eigenen Eigenschaften zu schaffen, und ich möchte wissen, welche Objekttypen I erlauben sollte unter der Annahme, werden sie sie in einem Property bearbeiten werden.
Lösung
Sie können einen Blick auf Klassen nehmen möchten, die von UITypeEditor
(in der System.Drawing.Design
Namespace ). Diese Typen werden übergeben als Parameter an die EditorAttribute
(in der System.ComponentModel
Namespace ).
Sie können auch für die Art in den Metadaten, um zu sehen, wo die EditorAttribute
angewandt wird. Allerdings nicht Verwendung Reflexion hier, wie das ist nicht das, was die PropertyGrid
Klasse verwendet.
Rather verwenden, um die TypeDescriptor
Klasse zu erhalten Eigenschaft Deskriptoren für die Eigenschaften von der Art (Aufruf der statischen GetProperties
Methode ). Dann mit dem PropertyDescriptor
Beispiel, rufen Sie die < a href = "http://msdn.microsoft.com/en-us/library/system.componentmodel.propertydescriptor.geteditor.aspx" rel = "nofollow noreferrer"> GetEditor
Methode eine Instanz des Editors bekommen für diese Eigenschaft.
Andere Tipps
Beachten Sie, dass es einige nicht-öffentliche Klassen.
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
können Sie werfen tatsächlich ein beliebiges Objekt an der Property. Es wird automatisch eine Menge Dinge tun. Sie müssen nur benutzerdefinierte UI-Typ-Editoren erstellen, wenn Sie eine spezielle bearbeiten Erfahrung haben wollen, die nicht nativ vorgesehen ist. Und auch in diesem Fall tun Sie es pro Objekt und nicht für ein ganzes Objekt.
Die Property verwenden Typeconverter und es gibt Typeconverter für jeden primitiven Typen (wie auch Sammlungen von primitiven Typen).
Solange Sie eine der primitiven Typen oder eine Sammlung von primitiven Typen Eigentum Gitter verwenden sollten die Bereitstellung eine Bearbeitungs UI nehmen können Pflege.
Neben UITypeEditor ist die Property der Lage, mit einem Typeconverter jedes Objekt anzuzeigen, die für CanConvertFrom (String) true zurückgibt. Sie können Ihre eigenen Typeconverter für bestimmte Objekttypen implementieren, um dies zu erreichen.