Laden...

Panel (Autosize) ändert seine Größe nicht

Erstellt von SGT_BOB vor 16 Jahren Letzter Beitrag vor 16 Jahren 2.490 Views
S
SGT_BOB Themenstarter:in
125 Beiträge seit 2005
vor 16 Jahren
Panel (Autosize) ändert seine Größe nicht

Hallo Leute.

Hab ein Problem mit einem Panel (Autosize = true). Das Element auf dem Panel ist ein SurfaceControl(ähnlich wie PictureBox). Ändere ich die Größe des SurfaceControls zur Laufzeit auf einen kleineren Wert, bleibt die Größe des Panels gleich.

Beispiel:

Alte Größe:
SurfaceControl: 800x800
Panel: 800x800

Neue Größe:
SurfaceControl: 400x400
Panel: 800x800 (immer noch)

Ändere ich die Größe manuell im Quelltext mit

this.panelMap.Size = this.scMap.Size;

"verschwindet" mein SurfaceControl. 8o

Sollte sich "Autosize" nicht eigentlich darum kümmern und wieso ist bei manueller Anpassung mein SurfaceControl nicht mehr sichtbar???

Hier nochmal ein wenig Source: (die Größe von scMap wird über einen Dialog geändert)


NewMap nm = new NewMap(this);
nm.ShowDialog(this);
if(nm.DialogResult == DialogResult.OK)
{
	this.scMap.Refresh();
	Console.WriteLine("DialogResult: OK");
	this.panelMap.Size = this.scMap.Size; // manuelle Anpassung
	Console.WriteLine("scMap.Size: " + scMap.Size);
	Console.WriteLine("panelMap.Size: " + this.panelMap.Size);

	this.CreateMap(); // hier wird an den beiden Elementen nix mehr
                                          // geändert, außer ein panelMap.ResumeLayout();
}

Hoffe ich konnte es ein wenig verständlich erklären und dass ihr mir fleißig antwortet. 😁

Mfg

SGT_BOB

*************************
Ich bin root, ich darf das... 😜
root>_
*************************

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo SGT_BOB,

WPF oder Windows.Forms?

Hast du Panel.AutoSizeMode passend gesetzt?

BTW: Vielleicht ist Dock oder Anchor eher was du bauchst.

herbivore

S
SGT_BOB Themenstarter:in
125 Beiträge seit 2005
vor 16 Jahren

Hi herbivore.

Ist für Windows.Forms.

Ich habe ein Panel (Autoscroll), darauf ein Panel (Autosize) und darauf ein SurfaceControl.

Hab jetzt ein wenig herumprobiert und es funktioniert wie es soll.

Hab SurfaceControl.Dock.Fill gesetzt und ändere jetzt im Programm einfach die Größe des Autosize-Panel, welches jetzt auch kein Autosize mehr braucht. 😁

Manchmal denkt man einfach in die falsche Richtung und ist dann froh, dass es Leute wie dich gibt, die den Blick wieder richten. 🙂

Habe die ganze Zeit versucht das Panel dem SurfaceControl anzupassen, statt anders herum.

Vielen Dank.

SGT_BOB

*************************
Ich bin root, ich darf das... 😜
root>_
*************************