Laden...

[gelöst] Scrollproblem UserControl

Erstellt von mosspower vor 14 Jahren Letzter Beitrag vor 14 Jahren 992 Views
mosspower Themenstarter:in
456 Beiträge seit 2007
vor 14 Jahren
[gelöst] Scrollproblem UserControl

Hallo "Kollegen",

ich hoffe jemand kann mir helfen für ein sehr komisches Verhalten.

Ich habe ein Menu, wenn ich auf einen Eintrag klicke, dann wird ein UserControl instanziert und an einen Panel geadded. Panel hat autoscroll auf true gesetzt.

Das funzt auch alles wie gewünscht. Problem ist, dass wenn ich später nochmal auf den Menüeintrag klicke, dann möchte ich nicht eine neue Instanz verwenden, sondern die initial erstellte. Wenn ich aber im Fenster vorher an eine Stelle im UserControl gescrollt habe, dann zeigt der mir beim wieder Hinzufügen an das Panel die gleiche Stelle an, wie zuletzt sichtbar war. So, das Problem hier ist aber, dass die Scrollbar (vom Panel) hier bei 0, 0 steht, das bedeutet, ich kann nicht mehr nach oben scrollen.

Hat jemand eine Idee, wie ich das lösen kann. Mit den Eigenschaften ScrollXXX habe ich nichts erreicht. Problem ist halt, dass wenn z.B. beim initialen Laden die Scrollbar 1000 hoch ist, dann ist sie später, wenn gescrollt wurde, z.B. nur noch 500 hoch und ich kann, wie gesagt, nicht mehr nach oben scrollen, weil eben die Scrollbar genau an der letzten Ausstiegsstelle beginnt.

Ich hoffe, ich konnte es einigermaßen erklären und ihr habt es verstanden. Noch toller wäre, wenn jemanden dieses Verhalten bekannt ist und mir einen Lösungsvorschlag posten könnte.

Gruß und vielen Dank für etwaige Antworten schon einmal im Voraus.

2.760 Beiträge seit 2006
vor 14 Jahren

Könnte dir das helfen? AutoScrollPosition

mosspower Themenstarter:in
456 Beiträge seit 2007
vor 14 Jahren

Ich habe es hinbekommen. Problem war, dass, aus welchen Gründen auch immer, die Y-Position auf einem Minuswert war. Das bedeutet, wenn ich die Eigenschaft Top auf 0 setze, dann funktioniert es, denn dann passt die Scrollbarlänge wieder.

Jetzt ist aber noch das Problem, wenn ich die Anzeige so möchte, wie im Ausgangspost, was kann ich dann machen, dass die Scrollbar "die richtige Länge" hat und nicht anfängt bei dem Minuswert des Panelcontrols, was ja bedeutet, dass alles oberhalb von 0 nicht mehr angescrollt werden kann. Echt sehr komisches Problem.

Ich werde die jetzt immer auf 0 setzen und die vorherige Scrollposition zwischenspeichern und dann wieder ansteuern ... vielleicht nicht die sauberste Lösung, dafür die Schnellste. Also, mache ich den Thread gleich mal auf fixed.

@jaensen,
danke für Deine Hilfe!

2.760 Beiträge seit 2006
vor 14 Jahren

Hast du evtl. einen Schnipsel Code der das ganze reproduzierbar macht?
[EDIT]
Ah, o.k. dann scheints ja zu passen.

mosspower Themenstarter:in
456 Beiträge seit 2007
vor 14 Jahren

Hast du evtl. einen Schnipsel Code der das ganze reproduzierbar macht?
[EDIT]
Ah, o.k. dann scheints ja zu passen.

Naja, ich mache einfach das Panel leer (Clear) und füge das vorher instanzierte UserControl hinzu (Add). Wenn ich bei der vorherigen Anzeige gescrollt habe und die Eigenschaft Top des UserControls nicht auf 0 setze, dann zeigt er mir das Usercontrol zwar so an, wie zuletzt gesehen, jedoch passt die Scrollbar nicht mehr, weil die genau an dieser Stelle beginnt (was vorher aber z.B. in der Mitte war).

Ups, da habe ich nicht gleich Dein EDID gesehen 😁