none
Automatische Scrollleisten funtionieren nicht RRS feed

  • Frage

  • Hallo MSDN,

    ich stehe mal wieder vor einem kleinen aber nervigem Problem.

    Ich habe ein MDI-Formular auf dem ein Grid (volle Breite mit Abstand) und darunter auf der rechten Seite mehrere ein-  und mehrzeile Textfelder sind. Die Textfelder unter dem Grid haben als X-Position die Mitte des Formulares und gehen dann bis zum Ende des Grids. Links neben ihnen sind die Labels zur Beschreibung angebracht. Ganz unten am Formularende befinden ja nach Aufruf 4 - 6 Buttons, die sowie die anderen Steuerelemente rechts angeordnet sind.

    Bei jedem Resizen werden die Positionen und Größen entsprechend angepasst (jedoch nicht mit Anchor, sondern per Code). Dies hat den Grund, dass einige Steuerelemente nur den Platz in Anspruch nehmen, der nötig ist (das Grid z.B. soll keine halben Zeilen anzeigen). Des Weiteren werden die mehrzeilige Textfelder so angepasst, dass sie möglichst hoch sind, jedoch auch keine halben Zeilen anzeigen. Es wird also der komplette Platz zwischen Grid und Buttons verwendet.

    Nun habe ich das Problem, dass die Automatischen Scrollleisten nicht wirklich gut funktionieren, sobald die minimale Größe erreicht wurde (Grid 5 Zeilen, mehrzeilige Textfelder 2 Zeilen). Falls z.B. die vertikale Scrollleiste nach unten verschoben wird, und das Fenster dann vergrößert wird, befindet sich überhalb des Grids leerer Raum. Das Problem habe ich gelöst, indem die Y-Position nicht einfach = 10 gesetzt wird, sondern y = 10 - Me.VerticalScrollbar.Value (denk das heißt so :) ).  Damit klappt das Ganze auch wunderbar.
    Falls sich jedoch einer von den Buttons links außerhalb des Formulars befindet (also vermutlich eine negative X-Position), wird die horizontale Bildlaufleiste nicht angezeigt. Und da ist mein Problem.

    Kann mir da irgendwer helfen?

    Viele Grüße
    Leucki
    Dienstag, 19. Januar 2010 16:54

Antworten

  • Hallo Leucki,

    ich stecke nicht so tief in Deinem Programm
    und kann Deine Beschreibung nur eingeschränkt nachvollziehen.

    Scrollleisten, implementiert auf der Ebene von ScrollableControl orientieren sich an
    den Einstellungen, die während des Layout -Prozesses  vorgenommen werden.
    Änderst Du ausser der (vorgesehenen) Reihe kommt schnell was durcheinander.
    Aufrufe von SuspendLayout während der Neuberechnung sind Pflicht.

    Um das Layout zu vereinfachen und nur dort anzupassen, wo es unbedingt notwendig ist,
    verpacke die Steuerelemente z. B. in einem TableLayoutPanel .
    Die kann man auch schachteln oder weitere Gruppierungen durch Panel vornehmen.
    Richtig eingesetzt passt sich die Gesamt-Komposition weitgehend automatisch an.
    Einige praktische Beispiele findest Du in  AutoLayout by Examples

    Im Falle der Schaltflächen solltest Du vermeiden, dass sie (manchmal) nicht sichtbar sind.
    Denn wenn sie nur durch Scrollen erreichbar sind, ist das den späteren Anwender
    "einfach nur nervig" (O-Ton eines Anwender in einem ähnlichen Fall).

    Gruß Elmar
    Mittwoch, 20. Januar 2010 08:50
    Beantworter

Alle Antworten

  • Hallo Leucki,

    ich stecke nicht so tief in Deinem Programm
    und kann Deine Beschreibung nur eingeschränkt nachvollziehen.

    Scrollleisten, implementiert auf der Ebene von ScrollableControl orientieren sich an
    den Einstellungen, die während des Layout -Prozesses  vorgenommen werden.
    Änderst Du ausser der (vorgesehenen) Reihe kommt schnell was durcheinander.
    Aufrufe von SuspendLayout während der Neuberechnung sind Pflicht.

    Um das Layout zu vereinfachen und nur dort anzupassen, wo es unbedingt notwendig ist,
    verpacke die Steuerelemente z. B. in einem TableLayoutPanel .
    Die kann man auch schachteln oder weitere Gruppierungen durch Panel vornehmen.
    Richtig eingesetzt passt sich die Gesamt-Komposition weitgehend automatisch an.
    Einige praktische Beispiele findest Du in  AutoLayout by Examples

    Im Falle der Schaltflächen solltest Du vermeiden, dass sie (manchmal) nicht sichtbar sind.
    Denn wenn sie nur durch Scrollen erreichbar sind, ist das den späteren Anwender
    "einfach nur nervig" (O-Ton eines Anwender in einem ähnlichen Fall).

    Gruß Elmar
    Mittwoch, 20. Januar 2010 08:50
    Beantworter
  • Hallo Leucki,

    Hat Dir die Antwort geholfen?

    Grüße,
    Robert

    Sonntag, 24. Januar 2010 14:49
    Moderator
  • Hallo Leucki,

    Ich gehe davon aus, dass die Antwort Dir weitergeholfen hat.
    Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.

    Grüße,
    Robert

    Donnerstag, 11. Februar 2010 10:08
    Moderator