受け入れられた答えは、実際には質問に答えません。この動作が発生する理由を説明するだけです。
他の回答のいくつかは確実な回避策を提案していますが、アプリケーション内のすべてのフォームが継承する基本フォームを作成SystemFonts.MessageBoxFont
し、コンストラクターでこの基本フォームの Font プロパティを設定することが最善の解決策であることがわかりました。これにより、ユーザーの環境に基づいてアプリケーションが実行時に正しいフォントを選択することが保証されるだけでなく (Hans Passant によって引き起こされる潜在的な問題を回避できます。Office 2007 のない XP は、Segoe UI がない場合に Microsoft Sans Serif に頼ることになります)。 ) だけでなく、現在の Windows フォントのデザイン時のサポートも提供します。設計時に正しいフォントを使用すると、フォーム上に作成されたコンテナ コントロールが設計時にフォームで使用されるフォントを取得するため、Josuegomes 氏が指摘する問題が解決されます。
上記の利点に加えて、これにより、作成するフォームごとにコンストラクターを変更することを覚えておく必要がなくなり、アプリケーション内のすべてのフォームにわたって一貫性が保証され、他の共通機能を配置する場所が提供されます。これを p/invoking などのいくつかの異なる方法で使用して、WinForms 実装のバグを修正します。
この方法で残る唯一の問題は、太字などの特定のコントロールのフォント スタイルを設定する場合です。これを行うのに最適な場所は、フォームのコンストラクターで、フォームのフォントをベースとして開始し、そこからスタイルを変更します。
myControl.Font = New Font(Me.Font, FontStyle.Bold)