Принятый ответ на самом деле не отвечает на вопрос; это просто объясняет, почему это происходит.
В некоторых других ответах предлагаются надежные обходные пути, но я обнаружил, что лучшим решением на самом деле является создание базовой формы, от которой наследуются все формы в вашем приложении, и установка для свойства Font этой базовой формы значения SystemFonts.MessageBoxFont
в конструктор Это не только гарантирует, что ваше приложение выберет правильный шрифт во время выполнения, в зависимости от среды пользователя (исключая потенциальную проблему, связанную с Hans Passant - XP без Office 2007 прибегнет к Microsoft Sans Serif в отсутствие пользовательского интерфейса Segoe ), но также предоставляет поддержку времени разработки для текущего шрифта Windows. Использование правильного шрифта во время разработки решает проблему, на которую указывает Josuegomes, потому что любой контейнерный элемент управления, созданный в форме, будет подбирать шрифт, используемый формой во время разработки.
Помимо вышеперечисленных преимуществ, это освобождает вас от необходимости помнить об изменении конструктора для каждой формы, которую вы создаете, и обеспечивает согласованность всех форм в вашем приложении, а также дает вам место для размещения других общих функций. Я использую это несколькими способами, такими как p / invoking и т. Д., Чтобы исправить ошибки в реализации WinForms.
Единственная проблема, которая остается с этим подходом, - это если вы хотите установить стиль шрифта для определенного элемента управления, такого как полужирный. Лучшее место для этого по-прежнему в конструкторе этой формы, начиная с шрифта формы в качестве основы и изменяя стиль из него:
myControl.Font = New Font(Me.Font, FontStyle.Bold)