2009-07-06 30 views
11

¿Cómo puedo cambiar el color de FONDO del FORMULARIO MDI en C#?Cambiar el fondo de un Formulario MDI

Lo cambié usando la propiedad de color de fondo pero el color no se cambia.

¿Qué debo hacer para realizar esta tarea?

Respuesta

24

El color BackGround real del control MDI se basa en el color del tema actual de Windows. Debe establecer físicamente el fondo del control MdiClient dentro de WinForm.

// #1 
    foreach (Control control in this.Controls) 
    { 
     // #2 
     MdiClient client = control as MdiClient; 
     if (!(client == null)) 
     { 
      // #3 
      client.BackColor = GetYourColour(); 
      // 4# 
      break; 
     } 
    } 

Editar - Se ha añadido comentarios:

  1. Necesitamos colocar a través de los controles en el formulario MdiParent a encontrar el control MdiClient que se agrega al establecer la forma de ser un MdiParent. Foreach es simplemente una iteración simple de un tipo a través de una colección.

  2. Necesitamos encontrar el control MdiClient dentro del formulario, para hacer esto lanzamos el control actual dentro del ciclo usando la palabra clave 'como'. Usar la palabra clave 'como' significa que si el molde no es válido, la variable que se está configurando será nula. Por lo tanto, verificamos si 'cliente' es nulo. Si lo es, el control actual en el ciclo no es el control MdiClient. Tan pronto como la variable 'cliente' no sea nula, entonces el control que tenemos es MdiClient y podemos establecer su color de fondo.

  3. Establezca el color de fondo en todo lo que desee. Simplemente reemplace "GetYourColour()" con el color que desee, es decir Color.White, Color.Blue, Colour.FromArgb (etc) ...

  4. Como solo hay 1 MdiClient, no tiene sentido continuar el ciclo ya que es solo una pérdida de tiempo de procesamiento. Por lo tanto, llamamos 'break' para salir del ciclo.

Avísame si quieres algo más que lo explique.

+0

Gracias por su respuesta. Con la ayuda de su código, ahora puedo cambiar el color de fondo del formulario MDI. Una ayuda más que necesito. Como soy nuevo en C#, si es posible, ¿puedes explicar la codificación por favor? ¡Muchas gracias! – sheetal

+2

Claro, voy a agregar algunos comentarios al código – GenericTypeTea

+1

¡Muchas gracias! Muy buena explicación !! Muchas gracias – sheetal

0

Escriba esto en su método de carga de su formulario MDI.

Controls.OfType<MdiClient>().FirstOrDefault().BackColor = Color.Purple; 
Cuestiones relacionadas