我想做的是在标记为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/

10-09 04:19