Cambiar el color de fondo en un formulario MDI

Descripción general

Este documento muestra un ejemplo de código para cambiar el color de fondo de un formulario MDI

[TOC] Tabla de Contenidos


↑↑↑

Cambiar el color de fondo en un formulario MDI


↑↑↑

A modo de introducción

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


↑↑↑

Un poco de código

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


↑↑↑

A.2.Enlaces

[Para saber mas]
[Grupo de documentos]
[Documento Index]
[Documento Start]
[Imprimir el Documento]