Да, это ошибка, в некотором роде. Обратите внимание, как в дизайнере вы устанавливаете размер формы с помощью свойств Width и Height. Эти свойства включают в себя размер границ и строку заголовка. Это проблема, однако, ваша форма может работать на компьютере, где пользователь увеличил, скажем, размер шрифта в строке заголовка. Это уменьшит размер клиентской области окна. Или, другими словами, свойство ClientSize формы будет меняться на этом компьютере. Оставляя меньше места для элементов управления и очень сильно портя дизайн вашей формы.
В классе Form есть код, который запускается после , когда создается дескриптор, непосредственно перед выполнением события Load. Он пересчитывает размер формы, используя тот же размер ClientSize, который был у вас на компьютере. Теперь все хорошо, высота формы не будет соответствовать той, которую вы установили в конструкторе, но в остальном форма выглядит одинаково, а расположение элементов управления идентично.
Тот же код гарантирует, что окно не станет слишком маленьким. И вот где он падает, он не уделяет достаточного внимания свойству FormBorderStyle. Как вы выяснили, обрезка высоты до размера строки заголовка плюс высота клиентской области. Это также предотвращает сужение формы, пытаясь убедиться, что значок и кнопки min / max / close всегда видны. Даже если у вас их нет.
Обходной путь - изменить ClientSize после выполнения этого кода, для этого нужно использовать переопределение OnLoad или обработчик события Load. Помните, что если вы жестко запрограммируете размер формы, как этот, то вам также следует установить для свойства AutoScaleMode значение None. Убедитесь, что это не вызывает проблем на компьютере с другим параметром DPI.