【发布时间】:2022-01-07 23:45:56
【问题描述】:
所以我有这段代码在面板中显示子窗体:
private Form activeForm = null;
private void openChildForm(Form childForm)
{
if (activeForm != null)
{
activeForm.Close();
}
activeForm = childForm;
childForm.TopLevel = false;
childForm.FormBorderStyle = FormBorderStyle.None;
childForm.Dock = DockStyle.Fill;
panelChildForm.Controls.Add(childForm);
panelChildForm.Tag = childForm;
childForm.BringToFront();
childForm.Show();
labelVersion.BringToFront();
}
panel和form的尺寸完全一样(form因为有边框有点大,但是无边框的尺寸和panel一模一样)。但是由于某种原因,当我打开它时,它似乎放大了,我无法弄清楚。
【问题讨论】:
-
这就是您所期望的。表单本身不再决定它的大小,它现在由面板大小固定。如果表单优雅地处理不断变化的窗口大小,那么在停靠在面板中时也将可见。或者可能是您的应用支持 dpiAware,并且表单会相应地重新缩放。
-
嗯,奇怪的是:我现在开始工作了。我继续将表单的字体更改为 10,然后又改回 8,现在它非常适合。我真的不明白那里发生了什么,但我很高兴我现在可以开始工作了。
-
啊,这就解释了。字体是一个“环境”属性,如果没有明确设置,那么它使用父字体。换句话说,它使用了 Panel 的字体。如果未设置(通常未设置),则使用面板父级的字体等。这通常是非常可取的,它确保所有控件使用相同的字体。
-
alrighttttt 然后解释它。感谢您的回答!