Resize Form - Untere Grenze festlegen

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Peter329.

    Resize Form - Untere Grenze festlegen

    Hi,

    ich möchte die "Size" meiner Form durch Ziehen mit der Maus ändern und die Steuerelemente automatisch neu anordnen. Dies geschieht in der Prozedur

    VB.NET-Quellcode

    1. Private Sub frmFile_Resize(sender As Object, e As System.EventArgs) Handles Me.Resize


    Das klappt auch prima ... nur wenn man die Form zu klein werden lässt, dann überlagern sich die Steuerelemente bzw. sie verschwinden.

    Wie kann ich erreichen, dass die minimalen Abmessungen meiner Form eine gewisse Breite und Höhe nicht unterschreiten?

    LG
    Peter

    Peter329 schrieb:

    nicht unterschreiten?
    So:

    VB.NET-Quellcode

    1. Private Sub Form1_Resize(sender As System.Object, e As System.EventArgs) Handles MyBase.Resize
    2. Dim w As Integer = Math.Max(Me.Size.Width, 200)
    3. Dim h As Integer = Math.Max(Me.Size.Height, 200)
    4. Me.Size = New Size(w, h)
    5. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hä? Nutze doch einfach die Anchor-Property für die Controls auf deiner Form und du brauchst keine Zeile Code. Das Überlappen kannst du nur verhindern, wenn du die MinimumSize auf einen Wert festlegst, bei dem die Steuerelemente sich nicht überlappen.

    Also mit der Eigenschaft geht das.

    @RodFromGermany: Sagte ich doch :D Dachte schon, ich hätte was falsch verstanden. xD
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Trade“ ()

    @Peter329:: Du solltest Dein ganzes Layout mal überdenken.
    Nimm ein TableLayoutPanel und pack da rein all Deine GUI-Elemente. Da kannst Du fixe und variable Breiten und Höhen einstellen, mit Anchor und Dock pinnst Du Deine Controls an die Border des Panels.
    Übrigens hat die Form selbst Properties MinimumSize und MaximumSize, ist mir vorhin gar nicht aufgefallen. :S
    Da hast Du nun alles beisammen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hi
    neben dem TableLayoutPanel gibt's auch noch andere LayoutPanels, wie das FlowLayoutPanel, die dir helfen, deine GUI anzuordnen. Mit Dock und Anchor und Padding auf dem Container-Control, etc. kommt man schon relativ weit. Siehe dazu auch einige Layout-Programme.
    [VB 2010] Alle Controls an die jeweilige Bildschirmauflösung anpassen?

    Gruß
    ~blaze~
    Erst mal vielen Dank für die Ratschläge.

    Das mit der Anchor Property werde ich mir mal ansehen. Mir scheint, dass ich mir da viel Coding sparen kann.

    VB.NET-Quellcode

    1. So:
    2. Visual Basic Quellcode
    3. Private Sub Form1_Resize(sender As System.Object, e As System.EventArgs) Handles MyBase.Resize
    4. Dim w As Integer = Math.Max(Me.Size.Width, 200)
    5. Dim h As Integer = Math.Max(Me.Size.Height, 200)
    6. Me.Size = New Size(w, h)
    7. End Sub


    Dieses Coding funktioniert zwar ... aber wenn man die Form Grenzen unterschreitet "flackert" der Bildschirm.

    Die Lösung

    RodFromGermany schrieb:

    Übrigens hat die Form selbst Properties MinimumSize und MaximumSize, ist mir vorhin gar nicht aufgefallen. :S


    Damit klappt die Geschichte dann auch ohne "flackern".

    Recht herzlichen Dank also nochmal. Ihr habt mir wie immer sehr geholfen! :P

    LG
    Peter