Windows 窗体 - 面板中的 ChildForm 被放大

Posted

技术标签:

【中文标题】Windows 窗体 - 面板中的 ChildForm 被放大【英文标题】:Windows Forms - ChildForm in panel is zoomed in 【发布时间】: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 然后解释它。感谢您的回答! 【参考方案1】:

嗯,奇怪的是:我现在开始工作了。我继续将表单的字体更改为 10,然后又改回 8,现在它非常适合。我真的不明白那里发生了什么,但我很高兴我现在可以开始工作了。

【讨论】:

以上是关于Windows 窗体 - 面板中的 ChildForm 被放大的主要内容,如果未能解决你的问题,请参考以下文章

调整面板大小以适应 Windows 窗体中包含的元素

按名称在 Windows 窗体中查找控件

Windows 窗体应用程序中的 Panel vs GroupBox

带有缩放和平移功能的 Windows 窗体的 PictureBox

将 WPF 控件放入 Windows 窗体窗体?

Windows 窗体按钮显示文本框并输入名称以创建新按钮 [关闭]