Пример #1
0
        /// <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
        }
Пример #2
0
        /// <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);
        }