Optimale Fenstergröße
-
Okay, die will ich glaube ich nicht berücksichtigen
Meine Anwendung besteht mehr aus Steuerelementen und Anzeigen von Werten. Das kann meiner Erfahrung nach nur aufwändig skaliert werden.
-
Die User werden dein Programm jetzt schon verteufeln wegen der festen Größe.
Skalierbare GUIs zu schreiben ist wahrlich kein Hexenwerk wenn man von Anfang an daran denkt. Wo siehst du da Probleme die dir Zeit kosten sollen?
-
Ich weiß nicht wie es bei WinForms ist, aber skalierbare Oberflächen sind eigentlich schon länger keine echte Mehrarbeit. Mit Ausnahme von Hinweisdialogen habe ich keinerlei Verständnis mehr für nicht-skalierbare Oberflächen.
In Einzelfällen beschränke ich vielleicht die vertikale Höhe auf einen fixen Wert (Grundsätzlich gibt es zudem ein sinnvolles Minimum in x/y-Richtung), wenn keine Komponente sinnvoll in der Höhe verändert werden kann, aber in der Breite sehe ich keinen Hinderungsgrund.
-
Zwergli schrieb:
Wo siehst du da Probleme die dir Zeit kosten sollen?
Ich muss doch im Code in der sizeChanged Methode jedes einzelne Element manuell verschieben und die Größe verändern oder nicht? Dann kann ich doch im Vorfeld nicht alles schön mit dem graphischen Designer von VS machen. Oder gehe ich einen falschen Weg? Wie gehe ich da vor?
Außerdem sollte sich doch auch die Größe der Elemente ändern, wenn man es skaliert. Nur die Position zu verändern ist ja irgendwie doof...Vielleicht weiß ich einfach nicht richtig wie ich an die Sache rangehen soll.
Bin jederzeit für Hinweise offen
-
MeinAccount schrieb:
Dann kann ich doch im Vorfeld nicht alles schön mit dem graphischen Designer von VS machen.
Warum nicht? Ich nehme an du verwendest WinForms, auch da sollte es im Designer Eigenschaften geben die du verwenden kannst, oder alternativ Layoutelemente.
-
In Winforms:
1. Spezielle Container wie TableLayoutPanel.
2. Docking-Eigenschaften von Controls
3. Anchor-Eigenschaften von ControlsDas ist im Wesentlichen das, was zur Verfügung steht.
Und nein, es ist KEINE GUTE IDEE jedes Control zu skalieren. Z.B. Buttons sollen nicht plötzlich 700x500 Pixel groß sein. Die bleiben bei ihrer Designgröße.
Um sinnvoll skalieren zu können, müssen Deine Fenster entsprechende Controls beinhalten, sonst geht es nicht. Z.B. jede Form von Listen, große Zeichenflächen, etc.. Eben alles, was skaliert noch gut aussieht.
-
qweqweqweqweqeqwe schrieb:
Und nein, es ist KEINE GUTE IDEE jedes Control zu skalieren. Z.B. Buttons sollen nicht plötzlich 700x500 Pixel groß sein. Die bleiben bei ihrer Designgröße.
Jein.
Nein - Üblicherweise meinen wir hier ja nicht von einer komplett skalierbaren Oberfläche, sondern eher das sich Fenster aufziehen lassen, und dabei (wo sinnvoll) Controls angepasst werden. Das kann eine Skalierung (z.B. ein Memofeld das dann den Platz ausnutzt) ebenso wie eine reine Anordnung (z.B. bleibt der Button immer mit bestimmten Abstand unten rechts) sein. Man sollte aber auch bei Fenstern die in der Größe verändert werden können, eine sinnvolle Mindestgröße festlegen.
Ja - Manchmal macht auch eine Skalierung von Buttons Sinn, aber nur wenn man die gesamte UI komplett skalierbar macht, um auch Menschen mit Sehschwächen zu helfen (dies würde ich aber nicht mit WinForms machen, unter WPF wiederum sehe ich hier durchaus einfache Möglichkeiten [das ist dann aber in der Regel nicht Fensterabhängig, sondern eine globale Einstellung]).
-
Das Tutorial hat mir doch gezeigt, dass es recht einfach geht. Vielen Dank an dieser Stelle.
Meine Anwendung enthält folgende Elemente:
Eine Tabelle mit Werten, Labels, Textboxen (in die allerdings nicht hineingeschrieben werden kann), Comboboxen, Buttons, eine Statusbar und kleinere Bildchen.Hier sehe ich keinen Sinn in einer Skalierung. Wenn man das Fenster vergrößert oder verkleinert würde sich also nur der Abstand zwischen den Elementen ändern. Ist es dann nicht viel sinnvoller eine feste Größe für das Fenster zu haben? Vielleicht kann ich mir aber auch einfach nicht vorstellen, was der Vorteil dabei sein soll...
-
MeinAccount schrieb:
Meine Anwendung enthält folgende Elemente:
Eine Tabelle mit Werten...Hier ist eine Skalierung sehr sinnvoll (mehr Platz => mehr angezeigte Datensätze und ggf. breitere Spalten).
MeinAccount schrieb:
Textboxen (in die allerdings nicht hineingeschrieben werden kann), Comboboxen,
Skaliert man häufig in der Breite => mehr sichtbare Fläche. In manchen Fällen macht dies keinen Sinn, häufig ist es aber nicht verkehrt.
MeinAccount schrieb:
Wenn man das Fenster vergrößert oder verkleinert würde sich also nur der Abstand zwischen den Elementen ändern.
Eben den würde ich immer gleich halten, aber häufig macht es Sinn zumindest horizontal Elemente anzupassen, spätestens bei Tabellen und mehrzeiligen Textfeldern macht aber auch eine vertikale Größenänderung Sinn.
Buttons und Labels lässt man in der Regel (sofern man nicht mit mehreren Sprachen arbeitet) auf der vorgefertigten Größe, passt aber ggf. bezogen auf die Position an (je nachdem an welcher Stelle des Fensters sie stehen).
MeinAccount schrieb:
Ist es dann nicht viel sinnvoller eine feste Größe für das Fenster zu haben?
Teilweise mache ich die Höhe, aber nur sehr selten die Breite fix. Selbst bei reinen Textboxen lasse ich in der Regel die Breitenänderung zu.
Wir haben z.B. Felder in denen üblicherweise nur maximal 20-30 Buchstaben stehen, manche Einrichtungen nutzen aber die maximal vorgesehene Eingabelänge von 50-255 Buchstaben aus. In der Regel ist es für die Optik bei uns schöner, sich an der kürzeren Zeichenfolge zu orientieren, aber die Möglichkeit der Skalierung zu lassen (Die Fensterbreite/-höhe wird bei uns beim Schließen gespeichert und beim Öffnen wiederhergestellt)-
MeinAccount schrieb:
Vielleicht kann ich mir aber auch einfach nicht vorstellen, was der Vorteil dabei sein soll...
Bei Tabellen ist der Vorteil ganz klar: Mehr Zeilen. Je nachdem was theoretisch und was üblicherweise in Textfelder stehen kann, macht aber auch da einge Größenänderung durchaus Sinn.
Und ganz nervig ist es bei mehrsprachigen Anwendungen, wenn die Label eine feste Breite bekommen, wenn der Text einer anderen Sprache auf einmal breiter und damit abgeschnitten wird. Hier mag ich WPF, da häufig Eingabefenster in ein Tabellenformat passt, und man dort auch Mindestbreiten festlegen kann. Wenn ein Label dann doch breiter ist, wird halt die Tabellenspalte im Layout angepasst, selbst wenn man normalerweise das Label nicht skaliert.
-
Vielen Dank asc! Jetzt weiß ich ein bisschen mehr, wo es sinnvoll sein könnte. Dann schaue ich jetzt mal generell wo ich überall wie skalieren werde. Vor allem bei der Tabelle erscheint es mir jetzt sehr sinnvoll.