2016-05-23 14 views
0

Ich versuche, die Größe eines Mdi-Elternformulars so zu ändern, dass es der Größe eines Mdi-Unterformulars entspricht. Wenn das untergeordnete Formular geöffnet wird, wird das übergeordnete Formular auf der Grundlage der Größe des untergeordneten Formulars angepasst, und das untergeordnete Formular behält die Größe bei, die im Designer erstellt wurde.So verhindern Sie, dass die Größe von Mdi-Kindformularen beim Öffnen geändert wird

Das scheint einfach genug, und ich habe fast erreicht sie mit folgendem:

frm_newWindow newWindow = new frm_newWindow(); 
this.ClientSize = newWindow.Size; 
newWindow.MdiParent = this; 
newWindow.Dock = DockStyle.Fill; 
this.MinimumSize = this.Size; 
newWindow.Show(); 

Zuerst dachte ich, es hat gut funktioniert - die Mutterform wurde größer und das Kind Form gefüllt die Kundenbereich - und ich wollte weitermachen. Ich schaute jedoch genauer hin und erkannte, dass die Dimensionierung nicht korrekt ist. Das übergeordnete Formular wird neu formatiert, aber aus irgendeinem Grund wird auch die untergeordnete Formulargröße geändert. Daher sind die Steuerelemente auf dem Formular Kind falsche Größen und an falschen Standorten. Sie sind ziemlich nah, aber nicht korrekt. Beispiel: Im Designer wird ein Textfeld, das unter einer Listbox "automatisch positioniert" ist (eine blaue Linie zwischen dem Textfeld und der Listbox beim Ziehen in Position), zur Laufzeit auf dem Formular weiter unten angezeigt.

ich auch versucht:

this.ClientSize = newWindow.ClientSize 

da das Kind Form nicht über eine Grenze, und ich dachte, dass vielleicht die nicht vorhandenen Grenzen noch irgendwie in der Berechnung für das Kind Form der Größe waren. Diese Linie verhielt sich jedoch genauso.

Es gibt derzeit keinen Code für das untergeordnete Formular außerhalb der InitializeComponent() - Zeile, die Visual Studio erstellt. Der Rahmenstil des Formulars ist auf "Keine" festgelegt. Neben der Größe und dem Text bleibt jede andere Eigenschaft die Standardeinstellung.

Wie behalte ich das MDI-Kind Formular vor dem Ändern der Größe beim Öffnen?

+0

Sie verwenden das falsche Werkzeug für den Job. MDI ist ein veraltetes Paradigma, und MDI erfordert auch, dass die untergeordneten Formulare über die normal großen Rahmen verfügen, damit sie ordnungsgemäß funktionieren. Sie können das übergeordnete Formular IsMDIContainer = false erstellen, Ihre untergeordneten Formulare in TopLevel = false ändern und dann dasselbe tun, was Sie tun. – LarsTech

+0

@LarsTech Danke, dass du das mit mir gesehen hast. Was macht das Ändern von TopLevel? Wenn ich dies in einem Formular versuchte, scheint dieses Formular nirgends zu erscheinen – elmer007

+0

Sie müssten es zu Ihrem übergeordneten Container hinzufügen. 'this.Controls.Add (yourChild);'. Vergiss nicht, es auch sichtbar zu machen: 'yourChild.Visible = true;' – LarsTech

Antwort

0

In der Child Form machen Sie die Property zu None. Dies wird es beheben.

Verwandte Themen