Quello che sto cercando di fare è disegnare un bicchiere su un modulo contrassegnato come un contenitore mdi. Tuttavia, non appena IsMdiContainer è impostato, il modulo aggiunge un MdiClient alla sua lista di controlli. A questo punto succede qualcosa alla forma genitore - quasi come un pannello grigio scuro viene ancorato all'intero modulo su cui viene posizionato MdiClient.Come rimuovere lo sfondo grigio sul modulo padre MDI?
Ho poi fare è la seguente per spostare il controllo MdiClient fuori del modo un po ':
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;
}
}
Ciò rende quindi la zona MdiClient attuale più piccoli in modo da poter vedere ciò che è dietro di esso (il bit che ospita le forme dei bambini) ed è palesemente ovvio che la forma genitoriale non è la pittura o qualcosa del genere.
Come si può vedere qui: http://img525.imageshack.us/img525/8605/mdiglassproblem.png
ora bisogno di ottenere in qualche modo l'area dietro il MdiClient (parte grigio scuro che è reso bianco sulla sezione di vetro) di andare via.
Qualche idea?
PS - Il vetro viene reso utilizzando il metodo DwmExtendFrameIntoClientArea in Vista.
Solo una nota a margine; la riga "if (c is MdiClient)" è ridondante. L'operatore 'as' esegue lo stesso controllo e restituisce null se è falso. Quindi, basta usare l'operatore 'as' e quindi controllare null. –
... o attaccare con 'è' e utilizzare un cast di stile C, ma personalmente preferisco l'altro approccio. –
Punto abbastanza giusto. – Dylan