我想做的是在标记为 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 方法渲染玻璃。