Steuerelemente verschieben sich ungewollt

  • VB.NET

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

    Steuerelemente verschieben sich ungewollt

    Hallo,

    ich habe eine Anwendung mit Window Forms, kein WPC, einige Buttons, einige CheckBoxen, manchmal in einer GroupBox plaziert.
    Die Anwendung läuft eigentlich prima. Heute habe ich die Anwendung an einem weiteren Rechner gestartet. Leider ist die Anordnung der verschiedenen Steuerelemente verändert...

    Hat jemand eine Erklärung dafür, warum sich Positionen von Steuerelementen verschieben, warum Textboxen über dem Rand einer Groupbox heraus treten usw.?

    (Ähnliche Frage gabs schon mal, siehe
    Visual Basic Objekte verschieben sich!
    Probleme mit der Aufllösung)

    Dieser Effekt scheint aus der unterschiedlichen Auflösung zu entstehen. Der Rechner, an dem das Problem auftritt, hat unter
    Systemsteuerung/Darstellung und Anpassung/Anzeige "Mittel - 125% (Standard) anstatt kleiner, 100%.

    Wenn ich auf 100% stelle, ist zwar die WinForm Ok, aber eigentlich ist die Auflösung zu klein...

    Jemand einen Tip für mich?

    Wie vermeide ich diesen Effekt? ?(
    ich kann nur ganz allgemein empfehlen, das Layout-System von Winforms zweckdienlich zu nutzen.
    Ich kriege damit immer ein flexibles Layout hin, was der User sich zurechtschieben kann, wie er möchte.
    Dass Controls ihre Groupboxen verlassen kommt dabei nicht vor.
    gucks dir mal an: Layout in Windows.Forms
    O.K., vielen Dank.
    Diese Möglichkeit der Layoutgestaltung war mir bisher nicht bekannt.
    Beim nächsten Projekt werde ich mich versuchen, da hinein zuarbeiten.

    Jetzt ist das Projekt, bei dem diese unerwünschten Effekte auftreten leider ziemlich umfänglich, gerade was die Anzahl der verschiedenen Steuerelemente anbelangt.
    Wahrscheinlich bekomme ich das Design nicht einfach umgestrickt.

    Ich gehe davon aus, dass in diesem Fall das "Kind im Brunnen" ist...und ich damit leben muss...

    Falls jemand noch einen anderen Ansatz hat, gerne!
    Du unterschätzt glaub die Mächtigkeit der DocumentenStruktur-Ansicht.
    Damit kannst du auch nachträglich ContainerControls hinterlegen, und deine Controls dann da drauf ziehen etc.
    Also da kannst du ganz sukzessive vorgehen, und fang mit einfachen Forms an.
    Das nachträgliche Hinterlegen ist im gegebenen Tut garnet gezeigt, da guck doch mal
    Film IX auf die vier Views auf Video - da hinterlege ich nachträglich Groupboxen.

    Aber mach dir Backups, oder besser noch zusätzliche Forms, die von Klonen der bislang funktionierenden Forms ausgehen, und entwickel die weiter.
    Wie man Forms klont ist in letztgenanntem Video ja auch gezeigt.
    Sehr lehrreich; wirklich vielen Dank.

    Leider habe ich so verrückte Sachen gemacht, dass je nach (Anwender-) Modus bzw. Zustand bestimmte Steuerelemente ausgeblendet werden oder aber Sie werden an andere Stelle verrückt, positioniert. Dies erfolgt aus dem Code.

    Der Hintergrund ist der, ich verwende die verschiedenen Elemente mehrfach. In der ersten Maske (die der Anwender zu sehen bekommt) habe ich, sagen wir mal, als Beispiel, vereinfacht ausgedrückt, GroupBox A, B, C; in der zweiten Maske A, B, D, in der 3. A,C,D usw.
    Platz aber ist nur für 3 GroupBoxen, weil, soll auf einem Laptop-Bildschirm alles zu sehen sein...
    Im Code werden also je nach Modus die einzelnen Boxen ausgeblendet und an die gewünschten Stellen verschoben.

    Tja, schätze, dass Konzept ist von vornherein suboptimal angelegt - ich hatte einfach nicht mit solchen Effekten gerechnet. Anfängerfehler...
    Hallo,
    das Thema scheint noch nicht gelöst zu sein, aber eventuell doch noch Interessant.
    Die Ursache für das ungewollte Verschieben der Steuerelemente ist eine nicht definierte Schriftart der Form und wenn die AutoScale-Eigenschaft der Form auf FONT steht. Die Lösung ist einfach die gleiche Schriftart, -größe und -style wie in den Steuerelementen zu definieren, die Form-Eigenschaft "Margin" festlegen(z.B. all=4), alle Elemente eventuell neu ausrichten und schon sollte auch im ausgeführten Programm alles an Ort und Stelle stehen.
    Alternativ kann man natürlich auch im Form-Designer die Definitionen anlegen. Z.B.:

    Me.Font = New System.Drawing.Font("Arial", 9.75!, System.Drawing.FontStyle.Bold)
    Me.Margin = New System.Windows.Forms.Padding(4, 4, 4, 4)

    In meinen Augen ein schwerer Mangel in der Programmierumgebung, der mich zwei Tage gekostet hat. :(