Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
(Klassen)architektur mehrerer Windows Forms mit Submenüs/Unterfenstern
Jesfreric
myCSharp.de - Member



Dabei seit:
Beiträge: 40

Themenstarter:

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

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Palladin007
myCSharp.de - Member

Avatar #avatar-4140.png


Dabei seit:
Beiträge: 1536
Herkunft: Düsseldorf

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4191

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
chilic
myCSharp.de - Experte



Dabei seit:
Beiträge: 2143

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
BerndFfm
myCSharp.de - Team

Avatar #nZo9Gyth4VPDSxGqM4sT.jpg


Dabei seit:
Beiträge: 3790
Herkunft: Frankfurt a.M.

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Console32
myCSharp.de - Member



Dabei seit:
Beiträge: 266

beantworten | zitieren | melden

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)
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Console32 am .
private Nachricht | Beiträge des Benutzers
Palladin007
myCSharp.de - Member

Avatar #avatar-4140.png


Dabei seit:
Beiträge: 1536
Herkunft: Düsseldorf

beantworten | zitieren | melden

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.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Palladin007 am .
private Nachricht | Beiträge des Benutzers
BerndFfm
myCSharp.de - Team

Avatar #nZo9Gyth4VPDSxGqM4sT.jpg


Dabei seit:
Beiträge: 3790
Herkunft: Frankfurt a.M.

beantworten | zitieren | melden

Zitat von Palladin007
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
private Nachricht | Beiträge des Benutzers
Palladin007
myCSharp.de - Member

Avatar #avatar-4140.png


Dabei seit:
Beiträge: 1536
Herkunft: Düsseldorf

beantworten | zitieren | melden

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 :D
private Nachricht | Beiträge des Benutzers