La respuesta aceptada no responde realmente a la pregunta; simplemente explica por qué está ocurriendo este comportamiento.
Algunas de las otras respuestas proponen soluciones provisionales sólidas, pero he descubierto que la mejor solución es crear una base que todos los formularios de la aplicación hereden y establecer la propiedad Font de este formulario base en SystemFonts.MessageBoxFont
en constructor. Esto no solo garantiza que su aplicación obtenga la fuente correcta en tiempo de ejecución, en función del entorno del usuario (evitando el posible problema planteado por Hans Passant; un XP sin Office 2007 recurrirá a Microsoft Sans Serif en ausencia de Segoe UI).), pero también le brinda tiempo de diseño compatible con su fuente actual de Windows. Usar la fuente correcta en el momento del diseño resuelve el problema que señala Josuegomes, porque cualquier control de contenedor que se cree en el formulario recogerá la fuente utilizada por el formulario en el momento del diseño.
Además de las ventajas anteriores, esto le libera de tener que recordar modificar el constructor para cada formulario que crea y garantiza la coherencia en todos los formularios de su aplicación, además de darle un lugar para poner otra funcionalidad común . Utilizo esto de varias maneras diferentes, como p/invocación, etc. para corregir errores en la implementación de WinForms.
El único problema que queda con este enfoque es si desea establecer un estilo de fuente para un control en particular, como en negrita.El mejor lugar para hacer esto se encuentra todavía en el constructor de esa forma, a partir de la fuente de la forma como base y la modificación del estilo de ella:
myControl.Font = New Font(Me.Font, FontStyle.Bold)
Eso es realmente triste. :( – wasker