2009-08-21 5 views
2

Dies ist eine .NET Winform-Anwendungsfrage.Wie gestaltet man die Benutzeroberfläche für Einstellungen nach verschiedenen Optionen in C# WinForm?

Ich komme zu diesem Design von Zeit zu Zeit. Eine einfache Form. Über dem Formular haben Sie eine Liste mit Optionen zur Auswahl. Je nach gewählter Option wird im Formularkörper ein eindeutiges Fenster mit Einstellungsdetails angezeigt.

Wie gestaltet man diese Benutzeroberfläche in Visual Studio sauber? Ich habe zwei Ideen. Die erste Idee ist es, viele Panels zu haben, jedes Panel enthält Einstellelemente. Verdecken Sie in Runtime alle Panels außer der Auswahl entsprechend der Option. In dieser Lösung ist es schwierig, die Steuerelemente des Formulars in VS Designer zu organisieren. Sie müssen die Form groß einstellen, um alle Panels zu halten. Die Paneele sind nebeneinander angeordnet. Es gibt viele Laufzeit-Code zum Schreiben. Wenn Sie beispielsweise das Formular laden, müssen Sie die Bereiche ausblenden und die Formulargröße zurücksetzen. Wenn Sie eine Option auswählen, müssen Sie die Bedienfelder neu positionieren und sie ein-/ausblenden. Langweilig!

Zweite Idee ist die Verwendung von TabControl. TabControl ist gut, weil die Registerkarten für Sie gut organisiert sind. Sie müssen die Bereiche nicht verschieben und die Größe des Formulars nicht ändern. Sie müssen lediglich in Runtime die richtige Registerkarte entsprechend den Optionen auswählen. Eine Sache, Sie müssen Teile des TabControl vor dem Benutzer verstecken, denn schließlich ist es kein echtes TabControl. Das Ausblenden der Tab-Buttons des TabControl ist nicht schwer, aber ich finde, dass danach immer eine große Lücke zwischen dem Tab-Bereich und dem folgenden Teil des Formulars besteht.

Hat jemand einen anständigen Weg zur Gestaltung der Benutzeroberfläche? Vielleicht nicht mit Panels oder TabControls, aber etwas schlauer? Wenn TabControl die meiste Zeit verwendet wird, wie kann man die Tab-Teile des TabControls ausblenden und anzeigen und wie wird der Rand und die Randgröße des TabControls eingestellt, so dass keine große Lücke existiert? Vielen Dank an jede Antwort und Anregung.

Antwort

3

Wenn ich dies tun muss, ich jede Gruppe von Steuerelementen in einem eigenen UserControl, und dann kann ich etwas anderes verwenden, um zwischen ihnen zu wechseln. Siehe zum Beispiel Implementing a paged Options dialog auf meinem Blog.

+0

Bevor ich zurückkam, sah ich Ihren Blog. Ich denke, die Hauptidee ist die Benutzerkontrolle. Eine weitere gute Sache der Verwendung der Benutzersteuerung ist, dass ich den UI-Code in jedes Benutzersteuerelement aufteilen kann. Im Gegensatz dazu, wenn ich Panels oder TabControls verwende, muss ich den UI-Code aller Panels in ein Formular schreiben, was nicht sehr ordentlich ist. Danke für die Idee. – Steve

2

Ich schlage vor, Sie erstellen UserControls für jede Ihrer "Einstellungsdetails" und wenn der Benutzer eine Option auswählt, laden Sie das entsprechende UserControl. Möglicherweise müssen Sie die Formulargröße anpassen, aber Sie können daher alle "Einstellungsdetails" in Ihrer IDE problemlos verwalten.

0

Klingt, als ob Sie ein Design-Muster brauchen.

Warum nicht eine UI-Factory erstellen, die Ihre UI-Objekte nach Bedarf zurückgibt?

1

Die Verwendung der Benutzerkontrolle ist ein guter Weg, um Ihr Problem zu lösen. Aber Sie müssen sie wahrscheinlich in Panels setzen und mit den Eigenschaften "Visible" und "Dock" spielen.

Sie müssen sie im Entwurfsmodus nicht an "Fill" andocken. Sie können diese Eigenschaft zu Laufzeit oder bei Bedarf festlegen.

Hoffe diese Hilfe.

+0

Die Idee ist die gleiche wie bei Roger. Da er mir ein Beispiel gab, wählte ich sein als die Antwort. Aber vielen Dank auch. – Steve

Verwandte Themen