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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top