如何为C#Winform设置粗体,斜体,下划线

时间:2015-09-27 14:57:47

标签: c# winforms

Halo伙计们,当我尝试用C#winForm

编写程序时,我遇到了问题

当我使用

编码我的btn_bold时,我制作了3个按钮(btn_bold,btn_italic,btn_underline)
if (rTb_Isi.SelectionFont != null)
        {
            System.Drawing.Font currentFont = rTb_Isi.SelectionFont;
            System.Drawing.FontStyle newFontStyle;

            if (rTb_Isi.SelectionFont.Bold == true)
            {
                newFontStyle = FontStyle.Regular;
            }
            else
            {
                newFontStyle = FontStyle.Bold;
            }

            rTb_Isi.SelectionFont = new Font(
               currentFont.FontFamily,
               currentFont.Size,
               newFontStyle
            );
        }
    }

问题是,当我点击btn_bold时,斜体文字变为粗体,不能是粗体和斜体。

您知道吗,如何使这段代码像Word女士一样可以一起工作?

我尝试更改代码

            if (rTb_Isi.SelectionFont != null)
        {
            System.Drawing.Font currentFont = rTb_Isi.SelectionFont;
            System.Drawing.FontStyle newFontStyle;

            if (rTb_Isi.SelectionFont.Bold == true)
            {
                newFontStyle = FontStyle.Regular;
            }
            else if (rTb_Isi.SelectionFont.Italic == true)
            {
                newFontStyle = FontStyle.Bold & FontStyle.Italic;
            }
            else
            {
                newFontStyle = FontStyle.Bold;
            }

            rTb_Isi.SelectionFont = new Font(
               currentFont.FontFamily,
               currentFont.Size,
               newFontStyle
            );
        }
    }

但它不起作用:(

1 个答案:

答案 0 :(得分:1)

FontStyle枚举具有[Flags]属性。这很简单:

System.Drawing.FontStyle newFontStyle = FontStyle.Regular;
if (rTb_Isi.SelectionFont.Bold) newFontStyle |= FontStyle.Bold;
if (rTb_Isi.SelectionFont.Italic) newFontStyle |= FontStyle.Italic;
if (rTb_Isi.SelectionFont.Underline) newFontStyle |= FontStyle.Underline;
if (newFontStyle != rTb_Isi.SelectionFont.Style) {
    rTb_Isi.SelectionFont = new Font(currentFont.FontFamily, currentFont.Size, newFontStyle);
}