Frage

Ich habe eine Form, die eine mdicontainer und hat an der Spitze einen Menüleiste. Ich füge ein Kind Form meiner mdi Container und wenn ich das Kind maximieren maximiert es über das Menustrip. Ich möchte wissen, wie das Kind zu begrenzen unter dem Menustrip zu maximieren. Jede mögliche Hilfe würde geschätzt.

War es hilfreich?

Lösung

Ihr Kind Formular wird in der Art und Weise maximiert, die Kinderformen sollen in MDI maximiert werden. Es ist wirklich nicht für den Menüleiste der übergeordneten Form -. Es ist eigentlich mit dem der Mutterform einen eigenen Menüleiste verschmelzenden

Um das Kind Form in der übergeordneten MDI nur den zur Verfügung stehenden Kind-Bereich nehmen zu machen (und nicht fusionieren sein Menü mit dem Menü der Eltern), setzen Sie so etwas wie dieser Code in der Resize-Ereignisse des Kindes Form:

if (this.WindowState == FormWindowState.Maximized)
{
    this.WindowState = FormWindowState.Normal;
    this.Size = this.MdiParent.ClientSize;
    this.Location = new Point(0, 0);
}

, die das Kind Fenster aus wird verhindert, dass tatsächlich maximiert wird.

Ich sage „so etwas wie dieser Code“, weil dieser Schnipsel nicht genau richtig funktioniert. Die ClientSize Eigenschaft der übergeordneten Form gibt die Gesamtgröße der Form, während Sie die Größe von nur den MDI-Client-Bereich verwendet werden sollen. Ich weiß nicht, wie das bekommen, und es ist offenbar nicht super-einfach. Sehen Sie diese Frage:

Größe / Lage WinForms MDI Kundenbereich

Andere Tipps

Sie können die Maximum Eigenschaft so eingestellt, dass sie nicht den gesamten Behälter nicht füllen.

Ich weiß, dass dies eine alte Frage, aber ich lief nur in dem auf einem altes Projekt arbeite ich, hier ist also eine Antwort für alle, dies zu sehen. Einstellen des Dock zu DockStyle.Fill wird Ihnen das gewünschte Verhalten.

Seien Sie sich bewusst sein, dass das Fenster handeln / seltsam aussehen, wenn Sie versuchen, das Fenster zu verschieben oder die Größe, während es hat, dass DockStyle.

Um dies zu erreichen, abonniert ich das MDI-Client-Fenster des Resize-Ereignis und wenn das Fenster nur maximiert worden war, habe ich seine DockStyle zu füllen, stellen Sie den FormBorderStlye zu FixedDialog (zu verhindern Ändern der Größe), und stellen Sie das Fenster Zustand in den normalen die Maximierung zu verhindern.

den Benutzer bewegt das Fenster zu verhindern, während es in diesem „maximierten Zustand“ I overrode einfach die WndProc Methode und behandeln, wenn das Fenster (SC_MOVE) bewegt wurde, und legte eine Rückkehr die Aktion von der Einnahme Wirkung zu verhindern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top