Lo que estoy tratando de hacer es dibujar algo de vidrio en un formulario marcado como un contenedor mdi. Sin embargo, tan pronto como se establece el IsMdiContainer, el formulario agrega un MdiClient a su lista de Controles. En este punto, algo sucede con la forma principal, casi como si un panel gris oscuro estuviera acoplado a la forma completa en la que se coloca el MdiClient.¿Cómo eliminar el fondo gris en el formulario padre MDI?
que entonces hacer es lo siguiente para mover el control MdiClient fuera del camino un poco:
foreach(var c in Controls)
{
if(c is MdiClient)
{
var client = (MdiClient)c;
client.BackColor = Color.Red;
client.Dock = DockStyle.None;
client.Size = new Size(this.Width-100, this.Height);
break;
}
}
Esto entonces hace que la zona MdiClient real más pequeña para que podamos ver lo que está detrás de él (el bit que alberga los niños formas) y es descaradamente obvio que la forma de los padres no es la pintura o algo así.
Como se puede ver aquí: http://img525.imageshack.us/img525/8605/mdiglassproblem.png
ahora la necesidad de conseguir de alguna manera el área detrás de la MdiClient (parte gris oscuro que se vuelve blanco en la sección de vidrio) que se vaya.
¿Alguna idea?
PS - El cristal se representa con el método DwmExtendFrameIntoClientArea en Vista.
Just a side note; la línea "if (c es MdiClient)" es redundante. El operador 'as' realiza la misma comprobación y devuelve nulo si es falso. Entonces, simplemente use el operador 'como' y luego busque nulo en su lugar. –
... o seguir con el 'es' y usar un molde de estilo C, pero yo personalmente prefiero el otro enfoque. –
Punto bastante justo. – Dylan