Beim ResizeEnd der MainForm die Size der Form an die nechstkleinere Mod 3 größe anpassen.

  • Allgemein

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

    Beim ResizeEnd der MainForm die Size der Form an die nechstkleinere Mod 3 größe anpassen.

    Hallo,

    ich möchte meine MainForm immer nach dem Resizen automatisch an die nechstkleinere Größe / 3 = X,0 anpassen.

    Das versuche ich so:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class MainForm
    2. Protected Overrides Sub OnResizeEnd(ByVal e As System.EventArgs)
    3. MyBase.OnResizeEnd(e)
    4. If Me.Size.Width < Me.Size.Height Then
    5. For i As Integer = Me.Size.Width To 0
    6. If i Mod 3 = 0 Then
    7. Me.Size = New Size(i + 8, i + 27)
    8. Exit For
    9. End If
    10. Next
    11. Else
    12. For i As Integer = Me.Size.Height To 0
    13. If i Mod 3 = 0 Then
    14. Me.Size = New Size(i + 8, i + 27)
    15. Exit For
    16. End If
    17. Next
    18. End If
    19. End Sub
    20. End Class


    Aber es funktioniert nicht.

    Was mache ich falsch und wie kann man es hinkriegen?
    hmm, irgendwie verstehe ich Deinen Code nicht: wenn Du die "Size" auf eine durch 3 teilbare Grösse anpassen willst, warum
    - änderst Du nur die kleinere Grösse von width, height ?
    - änderst Du die Size auf (i+8,i+27) ?

    Ein paar Bemerkungen:
    - einen nächstkleineren durch 3 teilbaren Wert findet man durch (Wert \ 3) *3 (Integerdivision)
    - deine Schleife funktioniert ohne Step -1 nie
    - es gibt ausser Size auch die Property ClientSize
    Mit Step - 1 hat es geklappt, danke :) Habe angenohmen, dass der Kompiler automatisch erkennt, dass es bei einer von 500 auf 0 Zählung nur um ein - statt + handeln kann, dem ist aber leider nicht so :)


    Warum ich die kleinere von den beiden nehme ist, weil wen ich die größere nehme, kann die Form stark ausserhalb des Bildschirms herauskommen. Wenn man nicht aufpasst, geht die ganze Titelleiste zu hoch und man muss die Form schließen. Wenn ich jedoch immer das kleinere nehme kann dies eben nicht mehr passieren.

    Warum ich Size auf (i+8,i+27) liegt daran, dass ich ein Steuerelement in der Form habe, welches immer Width Or And Not XOR Height Mod 3 = 0 haben muss. die +8 und + 27 sind, weil der Rahmen an jeder Seite 4 Breit ist und die Titelleiste + der Rahmen an der unteren Seite 27 breit sind.


    (Wert \ 3) *3
    Mit Mod gehts immer noch kürzer und das Ergebnis ist das gleiche.

    es gibt ausser Size auch die Property ClientSize
    Ist volkommen egal, welches von beiden man verwendet.
    Habe jetzt Me.Width verwendet.