1

Ich schrieb einen benutzerdefinierten Sammlungseditor für ein WinForms-Steuerelement. Sein Kern-Code sieht wie folgt aus:Festlegen der Position für benutzerdefinierte CollectionEditor-Formular in WinForms

internal class MyCollectionEditor : CollectionEditor 
{ 
    public MyCollectionEditor(Type type) : base(type) { } 

    protected override System.ComponentModel.Design.CollectionEditor.CollectionForm CreateCollectionForm() 
    { 
     System.ComponentModel.Design.CollectionEditor.CollectionForm myForm = base.CreateCollectionForm(); 

     #region Adjust the property grid 

     PropertyGrid myPropGrid = GetPropertyGrid(myForm); 
     if (myPropGrid != null) 
     { 
      myPropGrid.CommandsVisibleIfAvailable = true; 
      myPropGrid.HelpVisible = true; 
      myPropGrid.PropertySort = PropertySort.CategorizedAlphabetical; 
     } 

     #endregion 

     return myForm; 
    } 
} 

Ich brauche eine eigene Größe und Position für die Sammlung Editor Form zu setzen, aber ich konnte nicht einen Weg, das zu tun finden. Es scheint, dass das Sammlungs-Editor-Formular immer von VS an seinen Standardspeicherort positioniert wird. Gibt es eine Möglichkeit, das zu tun, was ich brauche?

Antwort

0

Sie achtet auf die StartPosition, DesktopLocation und Size, die Sie für das Formular festgelegt:

public class MyCollectionEditor : CollectionEditor 
{ 
    public MyCollectionEditor() : base(typeof(Collection<Point>)) { } 
    protected override CollectionForm CreateCollectionForm() 
    { 
     var form = base.CreateCollectionForm(); 
     // Other Settings 
     // ... 
     form.StartPosition = FormStartPosition.Manual; 
     form.Size = new Size(900, 600); 
     form.DesktopLocation = new Point(10, 10); 
     return form; 
    } 
} 

Dann dekorieren Ihre Immobilie auf diese Weise:

[Editor(typeof(MyCollectionEditor), typeof(UITypeEditor))] 
public Collection<Point> MyPoints { get; set; } 
+1

Off-topic, aber da Sie Sammlung sind Customizing Editor, möglicherweise finden Sie auch diesen Beitrag hilfreich: [Wie Standardwerte für Eigenschaften in einem 'CollectionEditor' -Dialog aktivieren] (http://stackoverflow.com/questions/35517211/how-to-enable-default-values-for-for-for- Eigenschaften-in-einer-Sammlung-Editor-Dialog) –

+0

Ich versuche, die Formularposition mit einer Eigenschaft, DesktopBounds, wiederherzustellen, aber die for-Größe wird immer mit jeder Zuweisung der DesktopBounds-Eigenschaft erhöht. Weißt du, warum das passiert? – TecMan

+0

@TecMan Sie können 'SetDesktopBounds' auch ohne Probleme verwenden, aber Sie sollten' StartPosition' zuerst auf 'FormStartPosition.Manual' setzen. –