[WForms] TabControl oder doch lieber MDI? Erfahrungsgesuch.
-
Hallo Leute!
Nachdem ich hier immer super Hilfe bekommen habe, diesmal eine Frage nach allgemeiner Umsetzung, keine code-Frage.
Problemstellung: Hotellzimmerverwaltung mit verschiedenen Fenstern mit verschiedenen Funktionalitäten. Daten auf MSsql.
Nun habe ich das in einer MDI angelegt: Jede Childform ist Member des Parents und wird je nach Aktion in den Vordergrund gebracht. Je nach Funktion bzw. Gültigkeitsbereich werden die Tabellen beim Laden im Main oder in den Children geladen. Soweit so gut.
Nun frage ich mich aber die ganze Zeit: ist das überhaupt sinnvoll, wenn alle children grundsätzlich verschieden sind? MDI heißt eigentlich, die children sind eher ein Array. Und würde sich hier die Verwendung einer tabControl anbieten? Alle Daten blieben innerhalb der "Main"-Form. Alle UI-Funktionen auch. Gibt das dann ein Chaos oder wird es übersichtlicher...?
Bevor ich aber die ganze Anwendung (soweit sie bis jetzt gediegen ist) umbaute, möchte ich lieber Eure Meinung hierzu hören.
Danke im voraus,
mfg
tobi
-
Wie wärs mit einer Baumstruktur links, Content daneben. Evtl. die möglichkeit, die Elemente auch in einem neuen Fenster öffnen zu können?
-
Hmm... interessante Idee. Wäre zu Übungszwecken ein Versuch wert. Nur habe ich hier nur 4-5 Fenster, keine Unterfenster, für die sich eine Baumstruktur anbieten würde.
Evtl. die möglichkeit, die Elemente auch in einem neuen Fenster öffnen zu können?
...bringt mich auf die Idee, dass man das ja mit MDI ganz leicht machen kann. Das Fenster wird einfach nicht als Child geöffnet, sondern als eigener Dialog. Momentan will ich aber alles in einem Rahmen halten - als Alternative zu früheren Projekten.
-
TobiBob schrieb:
[...] Nur habe ich hier nur 4-5 Fenster, keine Unterfenster, für die sich eine Baumstruktur anbieten würde.
Dann eher Tabs.
.. oder MDI ... wobei das dann vermutlich nicht MDI heißt.
-
TobiBob schrieb:
Alle UI-Funktionen auch. Gibt das dann ein Chaos oder wird es übersichtlicher...?
Das endet sehr schnell im Chaos wenn man nicht alles konsequent auslagert. Wenn Du zu Tabs greifst solltest Du trotzdem verschiedene Forms (oder UserControls) verwenden und in Tabpages einbetten.
Übrigens muss man sich nicht zwischen Tabs und MDI entscheiden. Schau Dir mal die Dockpanel Suite an: http://sourceforge.net/projects/dockpanelsuite
Damit kannst man sehr einfach eine Oberfläche wie in VS realisieren und es bleibt dem Benutzer überlassen, ob er mit Tabs oder Fenstern arbeiten möchte
-
µ schrieb:
Schau Dir mal die Dockpanel Suite an: http://sourceforge.net/projects/dockpanelsuite
Wow, nett!
-
µ schrieb:
Schau Dir mal die Dockpanel Suite an: http://sourceforge.net/projects/dockpanelsuite
Ohja, das sieht wirklich sehr nett aus!
Dazu müsste ich mir aber erstmal ein anders Projekt ausdenken, denn für zwei meiner Forms brauch ich auf jedenfall den ganzen Bildschirm. Aber ich hab die Seite für alle Fälle gebookmarkt.
µ schrieb:
Übrigens muss man sich nicht zwischen Tabs und MDI entscheiden. [] Wenn Du zu Tabs greifst solltest Du trotzdem verschiedene Forms (oder UserControls) verwenden und in Tabpages einbetten.
Danke, sehr gute Idee. Dann kann man sogar dem Benutzer überlassen, ob er tabs anzeigen lassen/benutzen will, oder die Fenster über ein Menü auswählt.
-
(Ich glaube, 2 Tage später ist ein Doppelpost gerechtfertigt...^^)
Nochmal @µ:
µ schrieb:
Wenn Du zu Tabs greifst solltest Du trotzdem verschiedene Forms (...) verwenden und in Tabpages einbetten.
Das habe ich jetzt gerade versucht. Fehlermeldung: Man kann kein Steuerelement der obersten Ebene in ein unteres einbetten... Wie meinst Du, soll ich es machen?
Momentaner Versuch:
private formImTab fImTab; // formImTab ists eigenständige Form //... //im Konstruktor nach InitializeComponents() ... this.fImTab = new formImTab(); this.fImTab.FormBorderStyle = FormBorderStyle.None; this.fImTab.Dock = DockStyle.Fill; this.tabPage1.Controls.Add(this.fImTab); //*BÄNG*
-
Hallo,
nimm statt Forms besser UserControls (auf deutsch haben diesen den glorreichen Namen "Benutzersteuerelemente"...).
Oder setze bei der Formform.TopLevel = false;
-
Habe jetzt auch grad probiert und noch etwas gegoogelt... aber was ist der Unterschied im Endeffekt? Userforms haben offenbar kein close-Event...
Und den Fehler hab ich jetzt auch behoben:
form.TopLevel = false; form.Visible = true; // muss dann aber auch noch da stehen... ka warum