为什么Cascading也在调整表格大小?

时间:2011-11-30 22:17:51

标签: c# winforms

用户打开子表单,稍微调整一下,然后打开另一个表单,我正在调用

this.LayoutMdi(System.Windows.Forms.MdiLayout.Cascade);

当我们打开子表单时。所以是的,它将它们级联起来,但也将它们调整为一些默认大小,我不知道从哪里获取它。是的我想要将第二个表单级联到第一个表单但是我不希望每次调用此Cascade方法时都更改以前表单的大小和位置。我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:1)

这是级联的内容:它调整它们的大小并按步骤配置排列它们。

如果您只想将其他表单放到顶部,可以尝试拨打myChildForm.Select();

您可以尝试在级联之前将MinimumSizeMaximumSize属性设置为等同于每个表单Size,然后再将其恢复。

List<Size> minSizes = new List<Size>();
List<Size> maxSizes = new List<Size>();
for (int i = 0; i < this.MdiChildren.Count(); i++) {
  minSizes.Add(this.MdiChildren[i].MinimumSize);
  maxSizes.Add(this.MdiChildren[i].MaximumSize);
  this.MdiChildren[i].MinimumSize = this.MdiChildren[i].Size;
  this.MdiChildren[i].MaximumSize = this.MdiChildren[i].Size;
}

this.LayoutMdi(MdiLayout.Cascade);

for (int i = 0; i < this.MdiChildren.Count(); i++) {
  this.MdiChildren[i].MinimumSize = minSizes[i];
  this.MdiChildren[i].MaximumSize = maxSizes[i];
}