如果 MDI 子级最大化,MDI 父级 window 高度会在恢复时缩小(在 minimize/maximize 之后)

MDI Parent window height shrinks on restore (after minimize/maximize) if an MDI child is maximized

每当我最小化或最大化一个 MDI 父窗体而它有一个子窗体最大化时,MDI 父窗体的高度会缩小大约 20 像素。

我从 .Net Framework 4.0 开始时遇到了这个问题,所以我尝试了其他版本但仍然有问题。

以下是复制的一些步骤(这次尝试 4.7.1):

  1. 关闭VS2017的所有实例并打开VS2017。
  2. 文件 > 新建 > 项目。
  3. 名称:MdiTest2;框架 4.7.2;点击确定。
  4. 将 Form1 "IsMdiContainer" 设置为 True。
  5. 右键单击项目 > 添加 > Windows 表单...调用此 ChildForm.vb。
  6. 返回 Form1,双击表单。
  7. 将 Form1 加载事件设置为以下:

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim frm As New ChildForm
        frm.MdiParent = Me
        frm.WindowState = FormWindowState.Maximized
        frm.Show()

    End Sub
  1. 开始调试
  2. 将父窗体拖动到某处,以便您会注意到窗体高度的变化(将窗体底部与另一个窗体、图标或任务栏顶部对齐)。
  3. 最大化表单然后单击恢复按钮...注意表单大小调整
  4. 最小化表单,然后单击任务栏上的图标...
  5. 注意表单调整大小(对我而言),表单的顶部保留在原来的位置,但底部边框向上移动了 ~20px。
  6. 如果我继续单击任务栏上的应用程序图标,每次恢复表单时它都会继续缩小。

是否有人能够复制这个,或者这只是我机器上的一个错误?我的分辨率是 2560x1440,缩放比例设置为 100%。如果我将 Form1 和 ChildForm 上的 AutoScaleMode 从 "Font"(默认)更改为 "None",我仍然有这个问题。如果我在 Minimize/Maximize MDI Parent 时没有最大化 MDI Child 窗体,则 MDI Parent 高度在恢复时不会缩小。

经过大量搜索并没有找到任何其他有此错误的人后,我开始问自己:"why would others not have this problem"。好吧,我的程序不会有 MenuStrip,但几乎所有 MDI 父窗体都有一个。因此,凭直觉,我在表单中添加了一个菜单条,它解决了我的问题。然后我将 MenuStrip 的可见性设置为 false 并进行了测试......它仍然适用于 MenuStrip 可见性设置为 false。