ControlCollection.Add verändert Größe von übergebener Form?
-
Es geht um ein UserControl, auf dem sich ein Panel befindet, in das wiederum dynamisch Foms gesteckt werden.
In eine Windows-Applikation eingebunden funktioniert das UserControl wie gewünscht. Eingebunden in SAPgui passiert aber Wunderliches: Beim Hinzufügen einer Form zu dem Panel verändert sich die Größe derselben.Beispiel 1:
1. child hat die Größe 320240
2. panel.Add(child);
3. jetzt hat child plötzlich die Größe 370307Beispiel 2:
1. child hat die Größe 400300
2. panel.Add(child);
3. jetzt hat child plötzlich die Größe 463384Was macht das Add() noch, außer dem Hinzufügen des übergebenen Controls in die Collection? Werden vielleicht irgendwelche Events ausgelöst, von denen ich nichts weiß? Kann es sein, dass SAPgui eine veraltete .NET-Umgebung mit einem Bug nutzt?
Vielen Dank für jeden Hinweis.
-
Welche Doc und Anchor einstellungen hat denn das Control was hinzugefügt wird?
-
child.Anchor=Top, Left
child.Dock=None
Mit DockStyle.Fill gibt es keine Veränderung.Was mich auch sehr verwundert: In der Anwendung gibt es eine Funktion ResizeForm(), die die Forms auf die in der Konfiguration abgelegte Größe bringt und auch die (Schrift-)Größe und Positionen der untergeordneten Controls entsprechend skaliert. Diese Funktion wird vor dem bösen ControlCollection.Add() aufgerufen und funktioniert auch korrekt. Dann wird die Größe durch das ControlCollection.Add() wie beschrieben manipuliert, wobei sich die untergeordneten Controls ebenfalls an die neue Größe anpassen - ohne, dass ResizeForm() erneut aufgerufen worden wäre! [edit]Habe mir gerade den Stacktrace angesehen und dabei Methoden wie Form.Scale entdeckt, das erklärt einiges und erlaubt wohl einen Workaround ;)[/edit]