Probleme mit Location und Autoscroll

CruzWoman

Grünschnabel
Hallo,

ich verzweifle langsam an der Autoscrolleigenschaft sowie an der Location meiner Steuerelemente.

Und zwar habe ich eine Windows Forms Anwendung und platziere meine Steuerelemente im Designer (Visual Studio C++ 2008). Ich möchte ein scrollbares Panel haben und wenn ich Autoscroll auf true setze, muss ich AutoScrollMinSize größer als Size setzen, sonst bekomme ich gar kein Scrollbar? Wenn ich Autoscroll richtig verstanden habe ist das ja schon widersprüchlich, oder? Eigentlich müsste ich AutoScrollMinSize doch kleiner wählen als die Panelsize...?

Das 2. Problem ist die Location meiner Steuerelemente. Ich setze sie auf mein Panel und gehe auf erstellen und plötzlich ist alles nach unten verschoben und Location und Size werden geändert. Habe auch mal überall Locked auf true gesetzt. Das ändert aber auch nichts.
Ich sehe langsam gar nicht mehr durch und komme überhaupt nicht mehr weiter, weil sich alles immerwieder von alleine verschiebt bzw. verstellt.

Kennt jemand das Problem? Was mache ich falsch bzw. was kann ich tun, damit das endlich mal so bleibt, wie ich es platziert habe?
Bin auch eher noch Anfänger in .Net und mit dem Designer...

Danke schon mal für die Antworten
Viele Grüße
Verena
 
Das AutoScroll funktioniert folgendermaßen: du gibst eine AutoScrollMinSize an, z.B. 200;400. Sobald nun deine Panel-Größe diesen Wert unterschreitet, werden die Scrollbars eingeblendet. Dein Panel hat also immer mindestens die Größe, die du in AutoScrollMinSize definiert hast.

Für das Positionieren von Steuerelementen in einem Container verwende ich prinzipell immer einen Layout-Manager. Für dich wäre vielleicht ein TableLayout interessant.
 
Danke für die schnelle Antwort. TableLayoutPanel probiere ich grade mal aus.

Zu dem Autoscroll habe ich noch eine Frage. Die Scrollbars müssen bei mir eigentlich immer erscheinen, da mein Formular und somit mein Panel, wo ich die Steuerelemente drauf anordne, immer deutlich größer als das Anwendungsfenster ist. Wenn mein Fenster z.B. 600;800 ist und das Panel bzw. dann das TableLayoutPanel 400;3000 muss ich ja immer scrollen können. Wenn ich das nun richtig verstanden habe, müsste ich AutoScrollMinSize des TableLayoutPanels 1 größer als die Size wählen, oder (also 401,3001)? Die Panelgröße würde AutoScrollMinSize nun immer unterschreiten und die Scrollbars wären immer da, oder? Habe aber festgestellt, dass der Scrollbar dann nicht weit genug scrollt, damit ich an die unteren Teile meines Formulars komme...?

Komisch ist auch, dass der untere Teil der Scrollbars nicht erscheint (das untere Ende mit dem Pfeil nach unten). Dieser liegt immer außerhalb meines Anwendungsfensters und ist somit verschwunden...?

DAS PANEL MUSS AN DIE FENSTERGRÖßE ANGEPASST WERDEN; ALSO SO DASS ES INS FENSTER PASST. DACHTE ICH MUSS DAS PANEL GRÖßER WÄHLEN UND DIE SCROLLBARS PASSEN SICH AUTOMATISCH AN. FALSCH RUM GEDACHT... DER UNTERE TEIL DER SCROLLBARS IST DANN NATÜRLICH AUCH DA. HAT SICH ALSO ERLEDIGT.
 
Zuletzt bearbeitet:
Dynamische Steuerelemente in TableLayoutPanel

Jetzt habe ich evtl. noch ein weiteres Problem...
Geht dann folgendes irgendwie mit dem TableLayoutPanel noch:

Ich möchte in meiner Windows Forms Anwendung Teile auf einem Formular erscheinen lassen und wieder verschwinden lassen, wenn ich eine Checkbox anklicke. Die Steuerelemente, die sich unterhalb des ein- bzw. auszublendenden Teils befinden sollen dann automatisch nach oben rutschen, damit man nicht leere Stellen im Formular hat. Also es soll eher ein Auf- und Zugehen werden und der Rest verrutscht dann entsprechend.
Meine Idee war zunächst mehrere Panels zu schachteln und den dynamischen Teil auch in einem eigenen Panel zu realiseren. Das "Ein-/Ausblende"-Panel würde ich dann per Visible=false bzw. Hide Ausblenden und die Location bzw. die Y-Koordinate des nachfolgenden Panels um die Höhe des "Ein-Ausblende"-Panels reduzieren, damit es entsprechend hoch rutscht.

Wie könnte man so etwas denn mit dem TableLayoutPanel machen? Es gibt ja Autosize. Kann ich meine Steuerelemente denn irgendwie "ausschalten", damit Autosize dann meine Zelle einfach verkleinert?
 
Die eigentliche Frage ist nicht wie, sondern warum? Du solltest deine Formulare nicht mit Funktionalität überfrachten; das verkompliziert nicht nur die Implementierung, sondern kann auch für den Benutzer verwirrend erscheinen. Benutzerkontrollen, die nicht gebraucht werden, solltest du nicht 'ausblenden', sondern nur deaktivieren.
 
Zu dem "wie": Kenne mich mit dem TableLayoutPanel nicht so aus, aber schau dir mal das FlowLayoutPanel an. Das ordnet Controls automatisch nebeneinander oder untereinander an.
 
Zeig am besten mal Code.
Ich vermute hier ev. ein grundlegendes Problem, hatte nie solche Probleme beim Autoscroll.

Zu Locked, das ist nur eine Eigenschaft um das Control im Designer zu sperren.
 
Zurück