Automatische Größenanpassung von Elementen in einer Form
-
Hi Leute,
stellt euch vor, ich habe auf einer Form vier Elemente nebeneinander:
Ein Label, ein Textfeld, nochmal ein Label und nochmal ein Textfeld.Wenn man den Dialog jetzt resized, dann möchte ich, dass:
- mit Label 1 nichts passiert - kein Problem
- Textfeld 1 links fest bleibt - kein Problem
- Textfeld 1 wächst. Nicht genausoviel, wie der Dialog vergrößert wurde, sondern nur halb so viel - Problem
- Label 2 sich relativ mitbewegt - kein Problem
- Textfeld 2 sich links relativ mitbewegt - kein Problem
- Textfeld 2 rechts immer den gleichen Abstand vom Rand hat - Problem
Sinn des ganzen ist im Grunde simpel: Die beiden Textfelder sollen immer das gleiche Größenverhätlnis haben und die Labels mit den Bezeichnungen sollen eben davor "kleben" bleiben.
Any ideas?
EDIT: Natürlich will ich die Resize-Methode des Dialoges nciht selbst implementieren. Ich möchte etwas bereits vorhandenes verwenden.
-
dEUs schrieb:
Hi Leute,
[*]Textfeld 2 rechts immer den gleichen Abstand vom Rand hat - ProblemResize der Form (Parent/Mainform) abfangen
Size des Parent dort ermitteln diese Werte auf Location-Eigenschaft
der 2. TextBox ummünzen
also Location.X dieser Textbox neu setzen auf eben this.Width - Abstandaber aufpassen nur um es zu verschieben musst du auf diese Location immer per new einen neuen Punkt zuweisen!
-
Lies mal meinen Edit...Habe was gefunden: TableLayoutPanel
-
fuer dein Textfeld 1 sehe ich im Prinzip auch kein Problem
musst eben auch nur im Resize-Callback wo duc schon die Location der Textbox 2
veränderst eben zusätzlich nochSize der TextBox1 anpassen eben auch im Bezug auf die Size der Form wo Deine 4
Controls draufsitzen.ich sehe nur ein kleinen fehler wenn man es nicht richtig anstellt
schiebt sich dann TextBox1 über/unter dein Label2 und TextBox2.Aber besagten gewollten Effekt erreischt Du indem Du von der Form
Resize Überlädst. Obwohl ich mir vorstellen koennte das Dich diese Lösung nicht gluecklich macht!?Tja Layoutmanager ala in Java habe ich
im Framework 1.1 bei mir noch nicht gefunden.Obwohl mit Geduld und Spucke kann man sowas selbst zusammenzimmeren
Das wäre wohl wieder etwas fuer das Observer-Pattern. Einfach alle
Grafischen Controls extra dort anmelden und das Resize an den eigen LayoutManager weiterleiten.
-
Danke für deine ausführlichen Antworten, aber liest du überhaupt, was ich schreibe?
-
dEUs schrieb:
Lies mal meinen Edit...Habe was gefunden: TableLayoutPanel
Da ich noch nie sowas gebraucht habe, also noch nicht vor dem gleichen Problem stand und ich Purist bin. Naja aber immerhin auch eine Variante!
Schaffst Du mit 2.0 Framwork bestimmt oder?
Muss ich mal gucken ob ich das imm 1.1 auch habe.Sich auszutauschen bringt immer guten Input
-
dEUs schrieb:
Lies mal meinen Edit...Habe was gefunden: TableLayoutPanel
Entschuldigung habe ich nicht weitergelesen
weil bei mir ratterts bei Problemstellungen sofort los und andere Koerperfunktionen bekommen eine niedrigere Prioritaet!
Sorry ist eine Schwäche von mir....
-
dEUs schrieb:
Danke für deine ausführlichen Antworten, aber liest du überhaupt, was ich schreibe?
also nochmal sorry sieh meine vorherige Aussage zu meiner Person
-
sclearscreen schrieb:
dEUs schrieb:
Lies mal meinen Edit...Habe was gefunden: TableLayoutPanel
Entschuldigung habe ich nicht weitergelesen
weil bei mir ratterts bei Problemstellungen sofort los und andere Koerperfunktionen bekommen eine niedrigere Prioritaet!
Sorry ist eine Schwäche von mir....Hehe, kein Problem
Dsa TableLayoutPanel ist übrigens erst ab dem .NET-Framework in Version 2.0 vorhanden. Für 1.1 wäre die einzige Möglichkeit wohl wirklich das ganze händisch zu machen wie früher immer in den good ol' MFC-Programmen
-
dEUs schrieb:
Lies mal meinen Edit...Habe was gefunden: TableLayoutPanel
Oh dann kann ich meine Aussage ueber Layout-Manager etwas revidieren.