如何停止我的粗体/斜体/下划线选项将文本字体更改回默认字体和大小

时间:2013-05-21 15:09:48

标签: c# fonts richtextbox richtext rich-text-editor

在我的应用程序中,我有一个功能,允许用户更改文本的粗体/斜体/下划线样式。但是,我注意到当用户将文本设置为粗体时,它会将文本恢复为默认大小和字体,然后使其变为粗体。显然这是不希望的,因为这意味着用户将不得不再次改变文本的字体和大小,这是不希望的。

目前,在我的应用程序的richtextbox中使文本变为粗体的代码是:

richTextBoxPrintCtrl1.SelectionFont = new System.Drawing.Font(richTextBoxPrintCtrl1.Font,
            richTextBoxPrintCtrl1.SelectionFont.Style ^ FontStyle.Bold);

我哪里错了?它确实使文本变为粗体,但它将文本恢复为默认大小和字体...但是,颜色不受影响。

1 个答案:

答案 0 :(得分:1)

尝试使用MSDN提供的示例代码:

  System.Drawing.Font currentFont = richTextBoxPrintCtrl1.SelectionFont;
  System.Drawing.FontStyle newFontStyle;

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

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

修改

根据@abalter的建议,我在这个答案中加入了我在下面的评论中写的示例代码。该代码可能更符合问题中的要求。

if (richTextBoxPrintCtrl1.SelectionFont.Bold == true)
{
    newFontStyle = currentFont.Style ^ FontStyle.Regular;
}
else
{
    newFontStyle = currentFont.Style | FontStyle.Bold;
}