私がやろうとしているのは、mdi コンテナーとしてマークされたフォームにガラスを描画することです。ただし、IsMdiContainer が設定されるとすぐに、フォームは MdiClient をコントロールのリストに追加します。この時点で、親フォームに何かが起こります。MdiClient が配置されているフォーム全体に濃い灰色のパネルがドッキングされているようです。
次に、MdiClient コントロールを少し邪魔にならないように次のようにします。
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;
}
}
これにより、実際の MdiClient 領域が小さくなり、その背後にあるもの (子フォームをホストするビット) を確認できるようになり、親フォームがペイントなどではないことは明らかです。
ここで見られるように: http://img525.imageshack.us/img525/8605/mdiglassproblem.png
MdiClient の背後の領域 (ガラス セクションで白くレンダリングされた濃い灰色の部分) をどうにかして取り除く必要があります。
何か案は?
PS - Vista で DwmExtendFrameIntoClientArea メソッドを使用して Glass をレンダリングしています。