Este documento muestra un ejemplo de código para cambiar el color de fondo de un formulario MDI
En este documento (Cambiar el fondo de un formulario MDI) se analiza porqué hay que escribir el código que se muestra a continuación. Es recomendable su lectura (que además de corta, está muy bien escrita) para que comprendas el porqué de las clases que se usan
Después de la lectura anterior, sabemos que el color gris oscuro que muestra un formulario MDI, en realidad es el color de fondo del control MdiClient creado, o dicho de otro modo, el color del valor de su propiedad BackColor, la cual hereda de la clase base Control, que por defecto toma el valor del color de sistema SystemColors.AppWorkspace, por tanto, será el valor de la propiedad BackColor de objeto MdiClient el que deberemos modificar para que ese fondo superpuesto existente en nuestro formulario MDI, se muestre con el color que nosotros deseemos asignarle.
A continuación tiene un ejemplo de código de los pasos que hay que dar para cambiar el color de fondo de un formulario Mdi
Private Sub FormMdiColorFondo_Load( _ ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles MyBase.Load Call EstablecerColorDeFondoParaFormLoad() Call NuevoHijo() End Sub Private Sub NuevoHijo() Dim f As New Form f.MdiParent = Me f.Text = " Formulario Hijo - " & _ Me.MdiChildren.Length.ToString() f.Show() End Sub #Region "Proceso de cambio del color de fondo de un Formulario MDI" ''' <summary> ''' Esta función tiene que ser llamada ''' por el evento FormLoad del Form ''' </summary> ''' <remarks></remarks> Private Sub EstablecerColorDeFondoParaFormLoad() '---------------------------------------------------------- 'ATENCION ' Para que todo esto funcione, esta función tiene que ' ser llamada desde el evento Load del formulario '---------------------------------------------------------- '---------------------------------------------------------- ' variable donde recogeremos la referencia ' al control [MdiClient] Dim ctlMdiClient As MdiClient = Nothing ' La función [GetMdiContainer] comprobará si existe ' un control MdiClient en el formulario indicado, ' devolviendo la referencia al citado control. ' o el valor Nothing si no existe ctlMdiClient = GetMdiContainer(Me) If Not (ctlMdiClient Is Nothing) Then ' Asignamos el color de fondo ctlMdiClient.BackColor = Color.AntiqueWhite End If End Sub ''' <summary> ''' La función comprobará si existe un control MdiClient ''' en el formulario indicado, devolviendo la referencia ''' al citado control. o el valor Nothing si no existe ''' </summary> ''' <param name="frm">El formulario en el que se busca</param> ''' <returns> ''' La referncia al objeto ''' <see cref="MdiClient">[MdiClient]</see> si existe ''' o un valor Nothing si no existe en el formulario ''' </returns> Private Shared Function GetMdiContainer( _ ByVal frm As Form) _ As MdiClient '--------------------------------------------------------- ' La función comprobará si existe un control MdiClient ' en el formulario indicado, devolviendo la referencia ' al citado control. O el valor Nothing si no existe '--------------------------------------------------------- ' Estamos buscando el control que representa ' el área cliente MDI Dim resultado As MdiClient = Nothing Dim ctl As Control For Each ctl In frm.Controls If ctl.GetType = GetType(MdiClient) Then ' ¿Encontrado! resultado = CType(ctl, MdiClient) ' no hace falta seguir buscando mas Exit For End If Next ' Return resultado End Function #End Region
Y eso es todo