Wenn man mit MDI-Fenstern arbeitet wird einem früher oder später auffallen, dass bei einem von vorneherein maximiertem MDI-Child das Icon nicht richtig in der Menüleiste angezeigt wird. Erst wenn man das Hauptfenster resized wird das Default-Icon gegen das richtige Icon ausgetauscht.
Dieser kleine Workaround behebt das Problem.
Im _MdiChildActivate Ereigniss der MDI-Parentform kann man einfach folgenden Codezeilen einfügen…
Wobei
mainMenu1 der Name des MenuStrip ist
und
mynamespace.Properties.Resources.defaultIcon
ein beliebiges default Icon als Resource
if (mainMenu1.Items[0].GetType().Name == "SystemMenuItem")
{
if(ActiveMdiChild != null)
{
mainMenu1.SuspendLayout();
if (ActiveMdiChild.Icon != null)
{
int i = mainMenu1.Height; //Damit bei zu großem Icon die Menüleiste "schön" bleibt
mainMenu1.Items[0].Image = ActiveMdiChild.Icon.ToBitmap();
mainMenu1.Height = i;
}
else
{
mainMenu1.Items[0].Image = mynamespace.Resources.defaultIcon.ToBitmap();
}
mainMenu1.ResumeLayout();
}
}
Kommentare zum Snippet