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 - Problem

    Resize 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 - Abstand

    aber 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 noch

    Size 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.


Anmelden zum Antworten