Form einschließlich Inhalt an Bildschirmgröße anpassen

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Form einschließlich Inhalt an Bildschirmgröße anpassen

    Moin, bin gerade dabei, mir ein kleines Programm zu schreiben, funktioniert soweit auch ganz gut, allerdings schaffe ich es nicht, dass es unter verschiedenen Bildschirmauflösungen läuft.

    Bei normaler Auflösung passt alles problemlos auf den Bildschirm, aber auf kleinen Auflösungen wie 640x480 ist die Form größer als der Bildschirm. Ich möchte daher, dass beim verkleinern der Form (mittels ziehen am Rand) der Inhalt (diverse Textboxen, Buttons, Labels usw) auch entsprechend verkleinert wird. Bei Google hab ich dazu schon einiges gefunden, aber nichts funktioniert so richtig. Oftmals wird irgendwas von Anchor geschrieben, aber damit zerstört es mir nur das komplette Layout beim verkleinern.

    Ich wüsste daher gern, ob es eine einfache, funktionierende Methode gibt, den Inhalt zu verkleinern, ohne für jede Bildschirmauflösung eine eigene Form zu erstellen.
    WinForms brauchen eben ein Minimum an Platz. Vergrößern/Verkleinern ist bei den meisten Controls (Button, Label) einfach hässlich. Du könntest alles auf ein Panel mit AutoScroll=true platzieren, so würde man bei solch kleinen Auflösungen einfach Scrollen können... schön ist aber auch anders.

    rotherford schrieb:

    http://www.codeproject.com/Articles/2231…king-Properties

    Sowas in der Art hab ich schon gefunden, allerdings bringt mich das nicht wirklich weiter. Diese Anleitungen beziehen sich alle auf eine riesige Form, in der zunächst massig Platz ist, und beim Verkleinern werden die einzelnen Elemente dann näher zusammengerückt. Das ist bei mir aber nicht möglich, da alles schon recht nahe zusammen ist. Er wäre zwingend erforderlich, auch die Größe der einzelnen Elemente anzupassen.

    WinForms brauchen eben ein Minimum an Platz. Vergrößern/Verkleinern ist
    bei den meisten Controls (Button, Label) einfach hässlich.
    Naja, lieber hässlich als unbrauchbar. Momentan habe ich es so gelöst, dass ich eine zweite Form erstellt habe und darin die Schriftgröße halbiert habe, worauf sich der komplette Inhalt halbiert hat. Es muss also irgendwie machbar sein. Scrollbars usw möchte ich eigentlich nicht verwenden.
    Okay, da hast du wirklich keine Chance. Es ist aber keine Lösung alles zu verkleinern, nur weil der Bildschrim nicht mehr anzeigen kann - zeige nur einen Ausschnitt des ganzen und man kann Scrollen. Das geht wie gesagt ganz einfach: Packe alles auf einen Panel und setze Panel.AutoScroll auf True. Wenn die Form nun kleiner als die Standard-Auflösung ist so erscheinen die entsprechenden Scrollbars automatisch.

    Edit: Dann naütrich alle Anchor-Werte auf Oben und Links setzten - außer der Panel, den stellst du am besten auf Dock.Fill. Teste das vorher an in einem Testprojekt bevor du deine Oberfläche zerschießt^^
    Evtl.: msdn.microsoft.com/en-us/libra…rms.tablelayoutpanel.aspx
    Represents a panel that dynamically lays out its contents in a grid composed of rows and columns.


    msdn.microsoft.com/de-de/library/w4yc3e8c(v=vs.80).aspx
    + msdn.microsoft.com/en-us/library/ms171688(v=vs.80).aspx

    So sieht das dann aus:

    (Die Linien können entfernt werden)
    /nicht getestet
    Bei so einem Layout bietet es sich an, die Vorschau in der Größe anzupassen, den Rest nur von der Position her, das sollte sogar auf 600x480px passen. Schau dir dazu mal das TableLayoutPanel aus der Toolbox an.
    wurde schon gesagt: Wenn du so viele Daten und das Bildle alles auf einen Blick haben willst, brauchst du halt einen großen Bildschirm :P
    Ansonsten kannst du überlegen, ob du die Ansicht in kleinere Teilbereiche unterteilst - das täte dann auch auf kleinere Screens passen.
    In diesem Fall würde ich die Vorschau radikal verkleinern, aber wenn man mit der Maus drüber geht, dass die sich dann vergrößert, solange man die Maus drüber hält.
    So könnte man alle Daten auf einem Blick behalten und bearbeiten, aber auch jederzeit in die Vorschau switchen.

    Kann man auch ganz primitiv lösen, mit einem TabControl. guck dir zB. diese TC-Erweiterung an - da ist u.a. son MouseOver-Effekt eingebaut: erweitertes TabControl

    FreakJNS schrieb:

    Okay, da hast du wirklich keine Chance. Es ist aber keine Lösung alles zu verkleinern, nur weil der Bildschrim nicht mehr anzeigen kann - zeige nur einen Ausschnitt des ganzen und man kann Scrollen. Das geht wie gesagt ganz einfach: Packe alles auf einen Panel und setze Panel.AutoScroll auf True. Wenn die Form nun kleiner als die Standard-Auflösung ist so erscheinen die entsprechenden Scrollbars automatisch.

    Ein Panel ist gar nicht notwendig. Einfach bei deiner Form AutoScroll = True setzen. Mehr Arbeit ist nicht nötig.

    Skybird schrieb:

    Das sind ja Ubisoftmethoden hier !

    Danke erstmal für die ganzen Antworten, ich hab das jetzt mit einer zweiten, etwas vekleinerten Form gelöst, in der so ein Autscrollpanel sitzt. Die Bildschirmgröße wird ausgelesen und die Fensterhöhe/Breite agepasst, falls der Bildschirm kleiner ist als meine Form. Ich denke, so kann man das erstmal lassen. Die Idee mit dem Aufteilen werd ich auch mal in Betracht ziehen, evtl lässt sich die Vorschau ja in ein eigenes Fenster auslagern oder ähnliches.