none
Größe und Position meiner Form ändern RRS feed

  • Frage

  • Hallo,

    ich starte mein Programm mit

    FormWindowState.Maximized

    Als MaximumSize habe ich 2480; 1280 festgelegt

    Als MinimumSize 640 ; 480
    Size steht wieder bei 2480; 1280

    Nun möchte ich die Größe so anpassen, dass es jeweils die Fenstergröße halbiert und dies entweder oben, unten, links oder rechts ausrichtet.
    Zu Testzecken habe ich erst mal fixe Werte eingegeben und die Höhe nicht ermittelt und berechnet.

    Mein Versuch sieht wie folgt aus:

                        Me.WindowState = FormWindowState.Normal
                        Me.Dock = DockStyle.Top
                        Me.Width = 2480
                        Me.Height = 480
    

    Im Ergebnis wird das Fenster zwar kleiner. Hat jedoch nicht die Abmaße wie gewünscht.
    Wo liegt mein Fehler?

     

     

    Liebe Grüße Stefan

    Donnerstag, 29. August 2019 07:05

Antworten

  • Hallo Stefan,

    Maximiere mal die Form und rufe die Eigenschaft Width ab. Das ist der maximale Wert, der dieser Eigenschaft zugewiesen werden kann. Sieh Dir mal folgenden Beispielcode an (in meinem Fall beträgt die maximale Breite 1382):

        Private Sub Form1_Resize(sender As Object, e As EventArgs) Handles MyBase.Resize
            If Me.WindowState = FormWindowState.Maximized Then
                TextBox1.Text &= "Breite der maximierten Form: " & Me.Width & "."
            End If
        End Sub
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Me.WindowState = FormWindowState.Normal
            Me.Dock = DockStyle.Top
            Me.Width = 2480
            Me.Height = 480
            TextBox1.Text &= "Per Code festgelegte Breite: " & Me.Width & "."
        End Sub

    Gruß,
    Dimitar


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    • Als Antwort markiert Sirius32ds Freitag, 30. August 2019 13:24
    Freitag, 30. August 2019 06:55
    Moderator

Alle Antworten

  • Hallo Stefan,

    Maximiere mal die Form und rufe die Eigenschaft Width ab. Das ist der maximale Wert, der dieser Eigenschaft zugewiesen werden kann. Sieh Dir mal folgenden Beispielcode an (in meinem Fall beträgt die maximale Breite 1382):

        Private Sub Form1_Resize(sender As Object, e As EventArgs) Handles MyBase.Resize
            If Me.WindowState = FormWindowState.Maximized Then
                TextBox1.Text &= "Breite der maximierten Form: " & Me.Width & "."
            End If
        End Sub
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Me.WindowState = FormWindowState.Normal
            Me.Dock = DockStyle.Top
            Me.Width = 2480
            Me.Height = 480
            TextBox1.Text &= "Per Code festgelegte Breite: " & Me.Width & "."
        End Sub

    Gruß,
    Dimitar


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    • Als Antwort markiert Sirius32ds Freitag, 30. August 2019 13:24
    Freitag, 30. August 2019 06:55
    Moderator
  • Hallo Dimitar,

    ich habe das nun mal wie folgt in meinem Programm umgesetzt:

    If e.KeyCode = Keys.F9 Then
                    If Me.WindowState = FormWindowState.Maximized Then
                        MaxWidth = Me.Width
                        MaxHeight = Me.Height
                        MsgBox("Breite der maximalen Form. " & Me.Width & "." & vbCrLf & "Maximale Höhe ist: " & Me.Height)
                    End If
                                 Me.WindowState = FormWindowState.Normal
                    Me.Dock = DockStyle.Top
                    Me.Width = 1000
                    Me.Height = 400
                    MsgBox(Me.Width & vbCrLf & Me.Height)
                End If

    Das Ergebnis ist das Gleiche.
    Ich sehe den Wald vor lauter Bäumen nicht mehr.

    Ganz nebenbei hatte ich jetzt (aufgrund hoher Prozessorauslastung) den Effekt, dass das Fenster tatsächlich kurz kleiner wird und danach wieder groß. Ich habe noch mal meinen Code geprüft ob ich bei einer Timerfunktion ggf. die Form auf Maximized setze. So könnte ich mir das erklären. Aber nichts dergleichen. :-(


    Liebe Grüße Stefan


    • Bearbeitet Sirius32ds Freitag, 30. August 2019 16:59
    Freitag, 30. August 2019 14:52