Icono Formulario hijo de MDI al maximizarlo se agranda en menustrip.

Iniciado por elturle, 12 Diciembre 2014, 23:44 PM

0 Miembros y 1 Visitante están viendo este tema.

elturle

Tengo creado una aplición mdi y en los formularios hijos tengo puestos unos iconos, pero cuando maximizo el formulario me aparece muy grande y al inicio del menustrip.

Quisiera que cuando se maximice el formulario o bien se quede el icono como en el formulario normal o bien no aparezca.

Un Saludo.

Eleкtro

#1
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:

Código (vbnet) [Seleccionar]
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á.

Código (vbnet) [Seleccionar]
    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.

Código (vbnet) [Seleccionar]
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