Feedback

C# - Workaround für den MDIChild-Icon Bug

Veröffentlicht von am 21.01.2009
(3 Bewertungen)
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

Snippet in VB übersetzen
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();
	}
}
Abgelegt unter MDI, MDIChild, Icon, Bug, MdiChildActivate.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!