Каждый раз, когда я минимизирую или максимизирую родительскую форму MDI, в то время как у нее развернута дочерняя форма, высота родительской формы MDI уменьшается примерно на 20 пикселей.

Я начал с .Net Framework 4.0, и у меня возникла эта проблема, поэтому я пробовал другие версии, но проблема не исчезла.

Вот несколько шагов для репликации (на этот раз попробуем 4.7.1):

  1. Закройте все экземпляры VS2017 и откройте VS2017.
  2. Файл> Создать> Проект.
  3. Имя: MdiTest2; Framework 4.7.2; Нажмите ОК.
  4. Установите для Form1 «IsMdiContainer» значение True.
  5. Щелкните правой кнопкой мыши проект> Добавить> Windows Form ... Называется этот 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. Обратите внимание на изменение размера формы (для меня), верх формы остается в исходном месте, но нижняя граница перемещается вверх на ~ 20 пикселей.
  6. Если я продолжу щелкать значок приложения на панели задач, он будет уменьшаться при каждом восстановлении формы.

Кто-нибудь может повторить это или это просто ошибка на моей машине? У меня разрешение 2560x1440, а масштабирование установлено на 100%. Если я изменю AutoScaleMode в Form1 и ChildForm с «Font» (по умолчанию) на «None», у меня все еще будет эта проблема. Если у меня нет развернутой дочерней формы MDI, когда я минимизирую / развертываю родительский элемент MDI, высота родительского элемента MDI не уменьшается при восстановлении.

0
Daniel P 20 Ноя 2018 в 00:11

1 ответ

Лучший ответ

После долгих поисков и не найдя никого с этой ошибкой, я начал спрашивать себя: «Почему у других не будет этой проблемы». Что ж, в моей программе не будет MenuStrip, но он есть почти во всех родительских формах MDI. Итак, догадываясь, я добавил полоску меню в форму, и это устранило мою проблему. Затем я установил видимость MenuStrip на false и проверил ... он по-прежнему работает с видимостью MenuStrip, установленным на false.

1
Daniel P 19 Ноя 2018 в 22:04