То, что я пытаюсь сделать, это нарисовать стакан на форме, помеченной как контейнер mdi. Однако, как только IsMdiContainer установлен, форма добавляет MdiClient к своему списку элементов управления. В этот момент что-то происходит с родительской формой - почти как темно-серая панель состыкована со всей формой, на которую помещается MdiClient.Как удалить серый фон в родительской форме MDI?
я тогда сделать следующее, чтобы переместить элемент управления 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 - Стекло визуализируется с использованием метода DwmExtendFrameIntoClientArea в Vista.
Просто боковое примечание; строка «if (c is MdiClient)» является избыточной. Оператор «as» выполняет ту же проверку и возвращает null, если он является ложным. Итак, просто используйте оператор «как», а затем проверьте вместо него значение null. –
... или придерживайтесь «is» и используйте приведение стиля C, но я лично предпочитаю другой подход. –
Справедливая точка зрения. – Dylan