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