Anzeigehöhe der SplitterDistance eines SplitContainers stimmt nicht beim ersten Laden aus My.Settings

  • VB.NET
  • .NET 5–6

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von DerSmurf.

    Anzeigehöhe der SplitterDistance eines SplitContainers stimmt nicht beim ersten Laden aus My.Settings

    Hallo Ihr lieben
    Ich habe hier ein kleines Demoprojekt, was das Problem in meinem Hauptprogramm exakt nachbildet.
    Es gibt auf einer TabPage einen SplitContainer (Orientation=Horizontal). Bei diesem SplitContainer wird das Panel2 (unten) mit der Collapsed Eigenschaft dynamisch ein und ausgeblendet.
    Im Designer steht diese Eigenschaft auf True - das Panel wird also standartmäßig ausgeblendet.
    Die Höhe dieses Panels wird in den My.Settings gespeichert (mithilfe der SplitterDistance Eigenschaft - und dem Button "Höhe speichern")
    Beim Anzeigen dieses Panels wird dieser Wert entsprechend aus den My.Settings geladen.
    Das funktioniert alles.

    Setze ich aber nun die WindowState Eigenschaft der Form auf normal (statt auf maximized) und maximiere die Form im Load Event (so ist der Ist Zustand der Demo Anwendung) mit:
    Me.WindowState = FormWindowState.Maximized
    Dann wird das Panel2 beim allerersten anzeigen viel zu klein dargestellt. Alle Werte stimmen aber.

    Wenn ihr also das Projekt startet und auf die Buttons anzeigen / ausblenden / anzeigen klickt, dann wird das Panel2 (das rote) zwei mal unterschiedlich hoch angezeigt.
    Ab dann wird immer die gleiche Höhe (wie beim zweiten Starten) angezeigt.
    Setzt ihr dann den WindowState im Designer auf maximized und kommentiert das Form Load Event aus, läuft alles wie es soll.
    Wo ist hier mein Fehler? Also das Panel2 soll natürlich auch beim ersten Anzeigen mit der richtigen Höhe dargestellt werden.
    Dateien
    Kann ich in VS2022, 17.1.3 nicht nachvollziehen. Ich starte das Programm, klicke auf anzeigen, ausblenden, anzeigen. Aber Panel2 ist immer genauso groß. Auch wenn ich das Fenster nicht auf maximized habe.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Jetzt wirds komisch.
    Ich verwende hier auch diese Version 2022 17.1.3.
    Wenn ich die Demo Solution (ohne jede Veränderung) starte ist die rote Form beim ersten Anzeigen kleiner als beim zweiten Anzeigen.
    In meiner Hauptanwendung tritt das gleiche Phänomen auf.

    Ich habe dazu mal zwei Screenshots erstellt.

    Bild 1 ist nach dem ersten klick auf anzeigen.
    Bild 2 ist dann nach ausblenden / und wieder anzeigen.

    Es muss wie gesagt, mit der Maximierung im Form Load zusammenhängen.
    Wenn ich das Form Load Event auskommentiere und im Designer auf Maximized = True setze sieht es immer aus wie in Bild2
    Bilder
    • 1.png

      40,6 kB, 2.880×1.920, 27 mal angesehen
    • 2.png

      43,02 kB, 2.880×1.920, 33 mal angesehen
    Ich hab's mal als GIF hochgeladen. Einmal NormalSize, einmal Maximized
    Bilder
    • bandicam 2022-04-06 10-59-12-045.gif

      282,85 kB, 640×360, 33 mal angesehen
    • bandicam 2022-04-06 11-00-19-107.gif

      395,79 kB, 640×360, 32 mal angesehen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    hmm.
    Also führen wir den gleichen Code in der gleichen VS Version aus und bekommen unterschiedliche Ergebnisse.
    Meine angehängten Bilder sind auf Windows11 entstanden auf einem Gerät mit übelst Hoher Auflösung und ca. 13 zoll Diagonale.
    Erstellt habe ich das Programm zuhause auf einen "normalen" 17 Zoll Laptop mit Win10 und normaler Auflösung.
    Betriebssystem und Bildschirmgröße / Auflösung können wir also wohl auch ausschließen.

    Fällt dir noch etwas ein, wodurch dieses Verhalten zustande kommt?