我想做的是在标记为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。
最佳答案
我认为这已经足够完美了。
foreach (Control ctrl in this.Controls)
{
if (ctrl is MdiClient)
{
ctrl.BackColor = Color.LightGray;
}
}
关于c# - 如何删除MDI父窗体上的灰色背景?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1190395/