/// <summary> /// control.FontをfontDataのFontに置換する。 /// /// control == nullなら何もせず帰る。(ことを保証する) /// </summary> /// <param name="control"></param> public static void ReplaceFont(Control control, FontData fontData) { if (control == null) { return; } // まず、Control本体のフォントだけ置換する。 var newFontSize = fontData.FontSize <= 0 ? 9 : fontData.FontSize; var newFont = fontData.CreateFont(); control.Font = newFont; // 子コントロールに対して、UserControl絡みだけ置換する。 ReplaceUserControlFont(control, newFont); #if MONO // Linux(Monoでメインメニューのフォントが途中から置換されない。Monoのbugくさい。自前で置換する。 if (control is MenuStrip) { // そこにぶら下がっているToolStripMenuItemに対してFontの置換を実施する。 var menu = control as MenuStrip; foreach (var item in menu.Items) { if (item is ToolStripMenuItem) { (item as ToolStripMenuItem).Font = newFont; } } } #endif }
/// <summary> /// control.FontをfontDataのFontに置換する。 /// </summary> /// <param name="control"></param> public static void ReplaceFont(Control control, FontData fontData) { // まず、Control本体のフォントだけ置換する。 var newFontSize = fontData.FontSize <= 0 ? 9 : fontData.FontSize; var newFont = fontData.CreateFont(); SetFont(control, newFont); // 子コントロールに対して、UserControl絡みだけ置換する。 ReplaceUserControlFont(control, newFont); }