Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: elturle en 12 Diciembre 2014, 23:44 pm



Título: Icono Formulario hijo de MDI al maximizarlo se agranda en menustrip.
Publicado por: elturle en 12 Diciembre 2014, 23:44 pm
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.


Título: Re: Icono Formulario hijo de MDI al maximizarlo se agranda en menustrip.
Publicado por: Eleкtro en 13 Diciembre 2014, 02:00 am
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
  1. Private Sub MenuStrip1_ItemAdded(ByVal sender As Object, ByVal e As ToolStripItemEventArgs) _
  2. Handles MenuStrip1.ItemAdded
  3.  
  4.    e.Item.Visible = e.Item.GetType.Name.Equals("SystemMenuItem")
  5.  
  6. 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
  1.    Private Sub Form2_Resize(ByVal sender As Object, ByVal e As EventArgs) _
  2.    Handles MyBase.Resize
  3.  
  4.        Select Case Me.WindowState
  5.  
  6.            Case FormWindowState.Maximized
  7.                Me.Icon = My.Resources.TransparentIcon
  8.  
  9.            Case Else
  10.                Me.Icon = My.Resources.DefaultIcon
  11.  
  12.        End Select
  13.  
  14.    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
  1. MenuStrip1.SuspendLayout()
  2.  
  3. Dim mdiChild As New Form2()
  4. mdiChild.WindowState = FormWindowState.Maximized
  5. mdiChild.Show()
  6.  
  7. MenuStrip1.Visible = Not MenuStrip1.Visible
  8. MenuStrip1.Visible = Not MenuStrip1.Visible
  9. MenuStrip1.ResumeLayout()

Saludos


Título: Re: Icono Formulario hijo de MDI al maximizarlo se agranda en menustrip.
Publicado por: elturle en 14 Diciembre 2014, 19:27 pm
Muchas Gracias. Solucionado.