Was ich versuche etwas Glas auf einem Formular als mdi Container markiert zu tun ist, ziehen. Sobald der IsMdiContainer jedoch festgelegt ist, fügt das Formular einen MdiClient zu seiner Liste der Steuerelemente hinzu. An dieser Stelle passiert etwas mit der Elternform - fast wie eine dunkelgraue Tafel an das gesamte Formular angedockt wird, auf das der MdiClient gelegt wird.Wie grauen Hintergrund auf MDI Elternformular entfernen?
ich dann tun, ist die nach der MdiClient Kontrolle aus dem Weg ein wenig zu bewegen:
foreach(var c in Controls)
{
if(c is MdiClient)
{
var client = (MdiClient)c;
client.BackColor = Color.Red;
client.Dock = DockStyle.None;
client.Size = new Size(this.Width-100, this.Height);
break;
}
}
Dies macht dann den eigentlichen MdiClient Bereich kleiner, so können wir sehen, was dahinter ist (das Bit, das Gastgeber die Kinder formen) und es ist offensichtlich, dass die Elternform keine Malerei oder etwas anderes ist. Ich jetzt http://img525.imageshack.us/img525/8605/mdiglassproblem.png
müssen irgendwie hinter dem MdiClient (dunkelgrau Teil der auf dem Glasabschnitt weiß gemacht wird), um den Bereich zu gelangen, um wegzugehen:
Wie hier zu sehen.
Irgendwelche Ideen?
PS - Glas wird mit DwmExtendFrameIntoClientArea Verfahren in Vista gemacht.
Nur eine Randnotiz; Die Zeile "if (c is MdiClient)" ist redundant. Der 'as' -Operator führt die gleiche Prüfung durch und gibt null zurück, wenn er falsch ist. Also, benutze einfach den "as" -Operator und überprüfe dann stattdessen auf null. –
... oder Stick mit dem ‚ist‘ und eine C Casts, aber ich persönlich bevorzuge den anderen Ansatz. –
Fair genug Punkt. – Dylan