Formgrößen haben sind plötzlich fast überall automatisch verändert

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    Formgrößen haben sind plötzlich fast überall automatisch verändert

    Hallo zusammen,

    ich bin vor einger Zeit endlich von VB2010 auf VS2016 umgestiegen.
    Anfangs war auch alles super, doch seit gestern fällt mir auf, dass sich bei vielen, aber nicht allen meinen Forms, deren Größe verändert hat, bzw. VS2016 diese einfach ändert. Anfänglich war das sicherlich nicht so.
    Öffne ich das Projekt mit VB2010 bekomme ich die Originalgröße angezeigt.
    In VS2016 sind diese dann aber 10 Pixel breiter und 10 Pixel höher. Der Rahmen hat sich vergrößert.
    VB2010 422x85


    VS2016 432x95


    Wohl gemerkt, nicht bei allen, es gibt Ausnahmen, aber quasi bei fast allen.
    Das zerscheißt mir meine ganzen Formatierungen.
    Man sieht es eigentlich ganz deutlich an der TitleBar. Das X ist weiter unten, hat oben mehr Raum.
    Ich stehe gerade vor einem Rätsel.
    Habe ich ausversehen irgendeine Einstellung geändert?
    Nachtrag: es betrifft scheinbar nur Forms mit FormBoarderStyle "FixedToolWindow/FixedDialog". Forms mit "Sizable" haben sich nicht verändert.
    Eine Idee: ich habe des FrameWork von 4.0 auf 4.8 geändert, könnte das damit zu tun haben? Anders herum: stelle ich es wieder auf 4.0 zurück ändert das nichts.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „roepke“ ()

    @roepke Hast Du dabei auch das Betriebssystem gewechselt?
    Der Rand von Formen ist vom Layout im Betriebssystem abhängig.
    Wenn Du kannst, lass dieselbe Exe unter W7, W10 usw. laufen.
    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!
    @RodFromGermany Das Betriebssystem ist Windows 10 und das schon seit Jahren. Bis letzte Woche war auch noch alles OK. Wenn die Rahmenbreite des Forms abhängig vom Betriebssystem ist, dann verstehe ich nicht, warum der Rahmen des Forms mit VB2010 rundherum 5 Pixel schmaler ist, als bei VS2016. Außerdem wäre es ja auch fatal, wenn die Dicke des Formrahmens sich mit dem Betriebssystem ändert. Beim allgemeinen Layout stimme ich Dir zu, dass sieht je nach Betreinssystem etwas anders aus, aber der "dicke" Rahmen um die Forminhalte, der muss doch in jedem fall unverändert überall gleich sein. Sonst stimmt doch am Ende die ganze Formatierung nicht. Durch die dickere Kopf/Fußzeile der Forms rutschen die Inhalte um besage 5 Pixel nach unten, bzw werden unten abgeschnitten. Das war letzte Woche noch nicht so. Und sofern ich die Application mit VB2010 starte ist es das auch nicht.
    Ich bin am überlegen, ob es evtl. was mit der Grafikeinstellung zu tun haben könnte (bessere Erkennbarkeit der Inhalte, eine sonst wie geartete Skalierung für Blinde), die von VB2010 noch nicht berücksichtigt wird, von VS2016 aber sehr wohl.
    @roepke Hast Du beide Studios auf diesem Rechner?
    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!
    Jepp, hab ich. Habe auch zwei verschiedene Rechner versucht. Auf beiden das gleiche Problem. D.h. eine direkte Windowseinstellung kann es ja auch irgendwie nicht sein.
    Ich habe zum testen die Projektmappe dupliziert. Eine Version habe ich mit VB2010 geöffnet, die andere mit VS2016 und zack - sehen die Forms nicht gleich aus.
    Ich habe die Projekt vor dem öffnen der Forms jeweils frisch kompiliert. Das ist nötig, weil in den Forms Verweise auf andere Projekte verbastelt sind.
    Das Projekt ist aus einem Repository, d.h. die /bin /obj und /.vs Ordner sind nicht dabei. Aber evtl. Visual Studio Konfigeinstellungen mitunter schon.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „roepke“ ()

    Welches Framework verwendest Du?
    Nimm mal eines über 4.0.
    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!
    Und wie sehen die Fenster der compilierten Exen aus?
    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!
    Geh mal mit dem 16er Studio auf Framework 4.0 zurück.
    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!
    Hab ich schon probiert. Ändert nichts.
    Das Projekt kommt aus dem Repository mit der Framwork 4.0. Einstellung. Öffne ich es als "jungfräulich" mit VS2016 steht das Framework noch auf 4.0. Aber auch vor und zurück, bereinigen, neu erstellen usw. hat alles nichts geändert.
    Ich hab das Projekt mal extrem zusammengestrichen und angehängt.
    Das Form frm_ProgressBar ist in VB2010 422x85 Pixel groß.
    Öffne ich es in VS2016 sind es jeweils 10 Pixel mehr.
    Test.zip
    Wenn Du das in VB2010 richtig öffnen kannst, was sagt die frm_ProgressBar.Designer.vb in Zeile#54 über Me.ClientSize und was sagt selbige Datei in VB2016? ClientSize ist dabei der für den Form-Inhalt zur Verfügung stehende Platz - unabhängig vom Rahmen!
    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.
    @VaporiZed
    VB2010
    Me.ClientSize = New System.Drawing.Size(416, 56)
    VS2016
    Me.ClientSize = New System.Drawing.Size(416, 56)
    Sind identisch. Noch nach dem vielen rumprobieren von heute, stimmt auch plötzlich wieder die Anzeige bei Ausführung der EXE.
    Aber nicht immer. Hin und wieder kann man sehen, dass sich das Form verändert. Dann ist es oben länger, d.h. der Abstand des "X" zum oberen Formrand wird größer und unten fehlt ein Teil. Gerade so, also ob die TitelBar und der Forminhalt innerhalb eine Rahmens nach unten rutscht.
    Ich finde trotzdem auch komisch, dass sich die Formgröße in VS2016 von der in VB2010 bei Betrachtung im Designer unterscheidet.
    Gut, das mag evtl. auch eine VS Eigenheit sein. Vielleicht führt mich das auch in die Irre und das "verrutschen" der Forminhalte hat damit gar nichts zu tun.
    Ich finde es ja etwa bedenklich, dass MS scheinbar die Rahmenbreite der Forms von VB2010 nach VS2016 um 5 Pixel vergrößert hat. Dadurch vergrößert sich zwar der Bereich für den Forminhalt nicht, aber die Gesamtgröße der Form. Da ich einige Forms aber innerhalb des Codes zur Laufzeit abhängig von Benutzeeinstellungen oder Forminhalten in ihrer Größe verändere und sich Size dabei auf die Formgröße und nicht auf den Bereich des Forminhalts bezieht, stimmt es nachher in der .exe nicht mehr mit dem überein, was ich zuvor in VB2010 mal festgelegt habe.
    Ich konnte diesbezüglich aber auch keine Infos im WWW finden. Kann doch nicht sein, dass das bisher keinem aufgefallen ist, bzw. dass es dazu keine Info seitens MS gibt?

    roepke schrieb:

    Kann doch nicht sein, dass das bisher keinem aufgefallen ist
    Och, naja … Formgrößenveränderung und WinForms-Designer-Forms-Darstellung passen nicht zum Resultat
    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.
    Tja, gute Frage, ich hab mich jahrelang an Form.Size gehalten. Warum? Der Klassiker: Weil ich es nicht besser wusste.
    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.