Estás describiendo el comportamiento normal e implícito de un container
MDI, alterar dicho comportamiento de forma natural y sencilla no es posible, un
MDI padre necesita dibujar el icono del form hijo al maximizarlo (siempre que tenga una Titlebar), forma parte de su implementación.
Pero puedes subscribirte al evento
ItemAdded del
MenuStrip para excluir elementos de cierto tipo, como por ejemplo el menu-icono del
Form maximizado, que es un item de tipo
SystemMenuItem:
Private Sub MenuStrip1_ItemAdded(ByVal sender As Object, ByVal e As ToolStripItemEventArgs) _
Handles MenuStrip1.ItemAdded
e.Item.Visible = e.Item.GetType.Name.Equals("SystemMenuItem")
End Sub
Otra solución (bastante cutre) sería que te suscribas al evento
Resize del
MDI hijo para asignarle un icono de 1x1 totalmente transparente, y le devuelvas el icono normal al redimensioanrr el form. para esto primero tienes que diseñar el icono, claro está.
Private Sub Form2_Resize(ByVal sender As Object, ByVal e As EventArgs) _
Handles MyBase.Resize
Select Case Me.WindowState
Case FormWindowState.Maximized
Me.Icon = My.Resources.TransparentIcon
Case Else
Me.Icon = My.Resources.DefaultIcon
End Select
End Sub
Sobre lo del icono agrandado, hay ciertos bugs descubiertos en alguna versión de .Net Framework respecto al comportamiento del icono de un MDI hijo maximizado, así que no te extrañes si te parece raro, seguramente sea un bug, nunca escuché que el icono se agrandase, pero si otras cosas similares. con forzar una actualización del menu debería ser suficiente para solucionar el (supuesto) bug.
MenuStrip1.SuspendLayout()
Dim mdiChild As New Form2()
mdiChild.WindowState = FormWindowState.Maximized
mdiChild.Show()
MenuStrip1.Visible = Not MenuStrip1.Visible
MenuStrip1.Visible = Not MenuStrip1.Visible
MenuStrip1.ResumeLayout()
Saludos