2010-11-18 8 views
0

). Wie können Sie die Standardgröße festlegen, mit der der Popup-Editor angezeigt wird, wenn Sie ihn über ein Eigenschaftsraster aufrufen?Festlegen der Startup-Größe des PropertyGrid-Standard-Popup-Editors (WinForms)

Dies ist für alle, die mit dem Windows Grid Editor vertraut sind.

Sie wissen, dass wenn Sie eine List-Eigenschaft zu einem Grid werfen, es die kleine [...] Schaltfläche anzeigt, die, wenn Sie es drücken, seinen Standard-Sub-Wert-Editor öffnet. Ich benutze den Editor eigentlich für einen anderen Objekttyp, aber ich habe dieses Beispiel nur angegeben, damit du weißt, worauf ich mich beziehe. Und hier ist ein Bild, zumindest bis die Verbindung lebt:

http://www.perpetuumsoft.de/sf/en/ims/rssSilverlight/GetStart/image032.jpg

Antwort

1

Mein Verständnis ist, dass (sowohl für modal und nicht modal Editoren) es ist völlig bis zur Laune der Kontrolle gezeigt wird. Wenn die beteiligten UITypeEditor eine große Form wählt, wird es groß sein ...

Der einzige Weg, das zu ändern wäre ein eigenes UITypeEditor zu definieren und es mit den beteiligten Typen (manchmal möglich mit TypeDescriptor.AddAttributes(...), das schafft die gleiche Form wie die Laufzeit zeigen wollte, aber es ändert die Größe, bevor zeigt.

+0

Hallo Marc wird gestartet. Danke für die Antwort. Dieses Property Grid geht mir auf die Nerven. Ich hasse die Tatsache, dass ich etwas von Grund auf neu programmieren muss, wenn sie nur eine kleine Eigenschaft oder sogar einen Callback bereitstellen muss, damit wir diesen Standardeditor etwas anpassen können. Nun, was mich noch mehr frustriert, ist, wie Sie im obigen Bild sehen können, diese "Hinzufügen" -Schaltfläche, die eine neue Instanz von jedem Objekt erzeugt, das wir im Popup-Editor darstellen. Was mich umbringt, ist, dass ich keinen Verweis auf das MAIN-Objekt in diesem Konstruktor bekomme (dann einen, von dem aus die modale Benutzeroberfläche aufgerufen wurde). Arrrrgh !!! – Axonn

+0

Marc, haben Sie eine Idee zu diesem anderen Thema? Sie wissen, wenn PropertyGrid-Objekte beim Klicken auf "Hinzufügen" erstellt werden, rufen sie einen parameterlosen Konstruktor für das fragliche Objekt auf. Wie kann ich einen Verweis auf das Originalobjekt erhalten? Der ITypeDescriptorContext ist nutzlos: - (. Das Feld "Instanz" zeigt auf die Eigenschaft, die gerade bearbeitet wird, und ich kann auf keinen Fall den ** Besitzer ** dieser Eigenschaft erreichen. – Axonn

+0

Ich denke nicht: : - /. – Axonn

0

du aus dem Standard-System.ComponentModel.Design.CollectionEditor durch erben erreichen und dann in der CreateCollectionForm Überschreiben Sie die gewünschte Größe.

Verzieren yo ur-Sammlung, um den benutzerdefinierten Sammlungseditor zu verwenden. Unten ist ein Beispiel, das die Sammlung Editor in vollem Umfang nutzen

class FullscreenCollectionEditor : System.ComponentModel.Design.CollectionEditor 
{ 
    protected override CollectionForm CreateCollectionForm() 
    { 
     var editor = base.CreateCollectionForm(); 
     editor.WindowState = System.Windows.Forms.FormWindowState.Maximized; 
     return editor; 
    } 

    public FullscreenCollectionEditor(Type type) : base(type) 
    { 
    } 

} 

Und dann schmücken Sie Ihre Sammlung Eigenschaft mit [Editor(typeof(FullscreenCollectionEditor), typeof(UITypeEditor))] heißt

public class MyModel 
{ 

    [Editor(typeof(FullscreenCollectionEditor), typeof(UITypeEditor))] 
    public List<FileModel> Files { get; set; } 

} 
Verwandte Themen