Dynamische Formularsteuerelemente

8

Mit C # 2.0 was ist der beste Weg, um dynamische Formularsteuerungen zu implementieren?

Ich muss eine Reihe von Kontrollen pro Datenobjekt bereitstellen, also sollte ich es einfach manuell machen und sie auslegen, während ich den oberen Wert inkrementiere oder gibt es einen besseren Weg?

    
Sam 04.09.2008, 11:39
quelle

5 Antworten

8

Sie können Bereiche mit automatischem Layout verwenden, z. B. FlowLayoutPanel und TableLayoutPanel .

Leider gibt es nur 2 Panels mit automatischem Layout, aber Sie können ein benutzerdefiniertes Layout Panel erstellen.

Ich würde Ihnen empfehlen, folgende Artikel zu lesen:

Vorgehensweise: Erstellen eines veränderbaren Windows-Formulars für die Dateneingabe

Exemplarische Vorgehensweise: Erstellen eines veränderbaren Windows Forms für die Dateneingabe

Eine andere Option wäre die Verwendung von WPF (Windows Presentation Presentation).
WPF passt perfekt zu Ihrer Aufgabe.
WPF-Steuerelemente können in WinForms-Anwendungen gehostet werden, sodass Sie nicht vollständig auf sie wechseln müssen.

    
aku 04.09.2008, 11:43
quelle
2

@Sam Ich weiß, dass diese Frage sich auf Windows Forms bezieht, aber Sie sollten auf jeden Fall anfangen, WPF anzuschauen. Diese Art von Szenario ist wirklich einfach in WPF mit DataTemplates und TemplateSelectors.

    
Matt Hamilton 04.09.2008 12:06
quelle
1

Was meinst du mit "dynamisch"? Ein neuer, fester Satz von Steuerelementen für jede Datenzeile im Datensatz? Verwenden Sie dann ein UserControl , das Ihre Steuerelemente enthält.

Oder meinen Sie, dass Sie, abhängig von Ihrem Datenlayout, dem Benutzer eine benutzerdefinierte Menge von Steuerelementen zur Verfügung stellen möchten, sagen wir, ein TextBox für jede Spalte?

    
Konrad Rudolph 04.09.2008 11:41
quelle
1

Ja, ich habe manuell Layout-Steuerelemente gefunden (inkrementiere ihre Top-Eigenschaft um die Höhe des Steuerelements plus eine Marge, wie ich gehe), um einigermaßen effektiv zu sein.

Ein anderer Ansatz besteht darin, Ihre Steuerelemente in "Panels mit Dock" zu platzieren, so dass jedes nachfolgende Paneel mit dem oberen Paneel auflegt. Dann können Sie die Sichtbarkeit der einzelnen Panels ändern, und die darunter liegenden Steuerelemente rasten ein, um den verfügbaren Platz zu füllen. Beachten Sie, dass dies ein wenig unvorhersehbar sein kann: Wenn Sie ein ausgeblendetes Fenster anzeigen, das angedockt ist, kann es manchmal seine Position relativ zu anderen angedockten Steuerelementen ändern.

    
Matt Hamilton 04.09.2008 11:42
quelle
1

Nun, genau so machen wir es jetzt bei einem Projekt. aber das ist nur in einfachen Fällen nützlich. Ich schlage vor, Sie verwenden eine Art Vorlage für komplexere Fälle.

Zum Beispiel habe ich mit Reflection einen bestimmten Steuerelementtyp auf eine bestimmte Eigenschaft meiner Domänenobjekte in einem älteren Projekt abgebildet.

Sie können versuchen, den Code aus Vorlagen mithilfe von t4 zu generieren. Weitere Informationen finden Sie unter T4-Vorlagen in Visual Studio für die Codegenerierung Ein einfaches Beispiel. Sie können dies auf WinForms anwenden.

Auch DevExperience hat ein nettes (teures) Framework, siehe DevExpress eXpressApp Framework ™ .

    
Mihai Lazar 04.09.2008 11:50
quelle

Tags und Links