我正在尝试调整Mdi父窗体的大小以适应Mdi子窗体的大小。因此,当打开子窗体时,父窗体将根据子窗体的大小调整大小,而子窗体将保持在设计器中创建时的大小。
这看起来很简单,我几乎用下面的代码实现了它:
frm_newWindow newWindow = new frm_newWindow();
this.ClientSize = newWindow.Size;
newWindow.MdiParent = this;
newWindow.Dock = DockStyle.Fill;
this.MinimumSize = this.Size;
newWindow.Show();
起初,我认为它运行得很好--父窗体变大了,子窗体填满了工作区--我打算继续。但是,我仔细观察了一下,发现大小不正确。父窗体确实调整了大小,但是由于某种原因,* 子 * 窗体的大小也被更改了。结果,子窗体上的控件大小不正确,位置也不正确。它们非常接近,但不正确。例如,在设计器中,“自动定位”在列表框下方的文本框(在将其拖动到位时,文本框和列表框之间会显示一条蓝线)在运行时位于窗体的下方。
我也试探着:
this.ClientSize = newWindow.ClientSize
因为子窗体没有边框,我想可能不存在的边框仍然在计算子窗体的大小。
子窗体上当前没有Visual Studio创建的InitializeComponent()行以外的代码。窗体的边框样式设置为“无”。除了大小和文本之外,其他所有属性都保持默认值。
如何防止Mdi子窗体在打开时更改大小?
2条答案
按热度按时间yrefmtwq1#
在子表单中,将
AutoScaleMode
属性设置为None
。这样就可以修复此问题。6vl6ewon2#
在将子对象附加到父对象之前尝试对其进行设置将修复奇怪的行为(如自动调整大小)。