Laden...

(Klassen)architektur mehrerer Windows Forms mit Submenüs/Unterfenstern

Erstellt von Jesfreric vor 7 Jahren Letzter Beitrag vor 7 Jahren 2.360 Views
J
Jesfreric Themenstarter:in
40 Beiträge seit 2016
vor 7 Jahren
(Klassen)architektur mehrerer Windows Forms mit Submenüs/Unterfenstern

Liebe Community

Ich hätte eine kurze Frage an euch. Ich programmiere derzeit an einer Software die mit einer Art "Hauptfenster" startet. Dort können über 5 Buttons weitere "Untermenüs" geöffnet werden. Dabei ist das jeweilige vorhergehende Menü komplett nicht mehr sichtbar.

Meine Frage wäre: Wie würdet ihr den Aufbau organisieren.

Mehrere "Windows Forms" die neu aufgerufen werden (die anderen werden über Hide unsichtbar gemacht), oder habt ihr ein "Windows Forms" Fenster, was mit verschiedenen Panels gefüllt wird.

Viele Grüße
Jesfreric

2.078 Beiträge seit 2012
vor 7 Jahren

Das liegt ganz in deinem Ermessen.

Ich persönlich als Nutzer würde es denke ich schöner finden, wenn es ein und das selbe Fenster ist. Das fällt nämlich auf, wenn ein neues Fenster geöffnet wird. Es würde mich aber auch nicht stören.

Ein neues Fenster öffnen und das Alte verbergen ist vermutlich leichter zu machen.

Wenn Du nur ein Fenster hast, ist es vor allem wichtig, dass die Inhalte, die Du anzeigen willst nicht in verschiedenen Panels hast und verschieden füllst, sondern als eigene Controls. Dann besteht der Aufwand nur noch darin, den vorherigen Control zu entfernen und das Neue hinzuzufügen. Das ist kaum mehr Aufwand als das Verbergen und Öffnen eines Fensters.

Ein Vorteil, wenn Du nur ein Fenster und für die Inhalte Controls hast:
Du kannst Bestandteile in das Fenster einbringen, die immer gleich sind, eine Status-Bar zum Beispiel. Wenn Du mehrere Fenster hast, ist da der Aufwand größer.

Lange Rede kurzer Sinn:
Ich persönlich würde ein Fenster verwenden und die möglichen Inhalte als eigene Controls halten und bei Bedarf aus dem Fenster entfernen oder hinzu fügen.

4.931 Beiträge seit 2008
vor 7 Jahren

Hallo,

soll der Anwender denn auch wieder zurücknavigieren können?
Dann macht es erst recht Sinn, so wie Palladin007 geschrieben hat, nur die Inhalte auszutauschen und eine einheitliche Oberfläche zu haben, s.a. [FAQ] Assistenten/Wizards: Mit Windows Forms eine Art Frameset einer Website nachbauen. Du könntest aber auch einfach ein TabControl verwenden.

C
2.121 Beiträge seit 2010
vor 7 Jahren

Ich würde mir zuerst überlegen was in den verschiedenen Unterfenstern alles erscheinen muss und wie das angeordnet ist, wie viel Platz es benötigt. Überlege auch ob man vielleicht einmal mehrere Fenster gleichzeitig offen haben will und dir das dann evtl. dein ganzes Konzept zerschießt?

Zwei Fenster die die selben Daten anzeigen und nur verschiedene Bearbeitungsmöglichkeiten bieten, könnte man lösen indem die Anzeige der Daten gleich bleibt und nur ein Teil des selben Fensters ausgetauscht wird.
Denke auch daran dass bei einem einzigen Fenster die Größe gleich bleibt. Wenn zwei Fenster sehr verschieden viele und verschieden große Elemente enthalten und trotzdem gleich groß sind, sieht das undurchdacht aus. Zum Beispiel einen "Optionen" Dialog mit wenig Inhalt würde ich nicht auf einem großen Bildschirm maximiert anzeigen lassen.

3.825 Beiträge seit 2006
vor 7 Jahren

Ich öffne ein neues Fenster mit Show() über dem Hauptfenster. So kann der Anwender, wenn er will, mehrere Fenster öffnen.

Schaltet der Anwender auf Vollbild werden die Unterfenster auch im Vollbild geöffnet. So kommen auch Anwender, die Fenster nicht kennen, mit der Anwendung zurecht. So wie MS-DOS früher 😉

Ich würde die Vorgehensweise von den Anwendern abhängig machen und von den Funktionen , die in den Unterfenstern angeboten werden.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

C
258 Beiträge seit 2011
vor 7 Jahren

Ich bin ein großer Fan von Single Window Applications, die dem App - Style folgen und immer nur eine Ansicht haben, dafür muss man sich etwas mehr mit dem Inhalt und vor allem mit der Navigation beschäftigen. Wir verwenden auch Caching damit Eingabefenster ohne bedenken während der Arbeit wieder verlassen werden können, usw.

Wir haben vor einem Jahr eine Software umgestellt von sehr vielen stackenden Fenstern auf ein einzelnes (haben ebenfalls auf WPF umgestellt btw). Selbst bei einem Experten Tool wie unserer Software kommt die änderung sehr gut an. Aber wie oben schon angedeutet ist das ganze etwas mehr aufwand.

PS: Wenn WPF auch möglich ist kannst du direkt ein TabControl verwenden und so umstylen das die Tab Header so aussehen wie du willst. (Geht bei WinForms auch ist aber immer deutlich mehr aufwand)

2.078 Beiträge seit 2012
vor 7 Jahren

Bei WPF würde ich allerdings kein TabControl nehmen, ein ContentControl, das das PageViewModel bekommt. Über DataTemplates kann dann jedem ViewModel die passende View zugeordnet werden.
So reicht dann im MainViewModel eine Page-Property. Wir die geändert, aktualisiert die View sich automatisch passend anhand der DataTemplates.

Aber das nur so nebenbei, bei WinForms ist das ja nicht ganz so einfach.

Allgemein gefallen mit Single-Window-Anwendungen auch, aber nicht immer.
Zum Beispiel habe ich noch die Arbeit mit einer Anwendung im Hinterkopf (welche weiß ich nicht mehr), wo alles ein Fenster war - auch die verschiedenen Dokument, an denen ich in der Anwendung gearbeitet habe. Diese Dokumenta waren im Prinzip eigene Fenster innerhalb des Haupt-Fensters.
In so einem Fall würde ich das als eigene Fenster regeln (wie z.B. Gimp) oder zumindest als eigenes Fenster anzeigen, wenn man es raus zieht.

3.825 Beiträge seit 2006
vor 7 Jahren

Zum Beispiel habe ich noch die Arbeit mit einer Anwendung im Hinterkopg (welche weiß ich nicht mehr), wo alles ein Fenster war - auch die verschiedenen Dokument, an denen ich in der Anwendung gearbeitet habe. Diese Dokumenta waren im Prinzip eigene Fenster innerhalb des Haupt-Fensters.

MDI ? Das ist sehr altmodisch und auch sehr unpraktisch finde ich.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

2.078 Beiträge seit 2012
vor 7 Jahren

Weiß ich nicht mehr

Ist auch schon eine ganze Weile her, ich meine Office hat das früher so gelöst.

Ich wollte es auch nur ansprechen, nicht dass hier irgendwer auf die Idee kommt, gar keine zusätzlichen Fenster mehr zu verwenden 😄