如何将粗体文本添加到富文本框中

时间:2014-01-19 00:56:43

标签: c# winforms

我正在使用C#的Visual Studio Express 2012。

我正在使用代码向RichTextBox添加文字。每次添加2行。第一行需要加粗,第二行正常。

这是我唯一能想到的东西,即使我确信它不会起作用:

this.notes_pnl.Font = new Font(this.notes_pnl.Font, FontStyle.Bold);
this.notes_pnl.Text += tn.date.ToString("MM/dd/yy H:mm:ss")  + Environment.NewLine;
this.notes_pnl.Font = new Font(this.notes_pnl.Font, FontStyle.Regular);
this.notes_pnl.Text += tn.text + Environment.NewLine + Environment.NewLine;

如何将粗体线添加到富文本框?

感谢目前为止提交的答案。我想我需要澄清一点。 我没有添加这两行1次。我将多次添加这些行。

2 个答案:

答案 0 :(得分:7)

为了使文字变粗,您只需要使用\b包围文字并使用Rtf成员。

this.notes_pln.Rtf = @"{\rtf1\ansi this word is \b bold \b0 }";
OP提到他们将随着时间的推移添加行。如果是这种情况,那么可以将其抽象为一个类

class RtfBuilder { 
  StringBuilder _builder = new StringBuilder();

  public void AppendBold(string text) { 
    _builder.Append(@"\b ");
    _builder.Append(text);
    _builder.Append("\b0 ");
  }

  public void Append(string text) { 
    _builder.Append(text);
  }

  public void AppendLine(string text) { 
    _builder.Append(text);
    _builder.Append(@"\line");
  }

  public string ToRtf() { 
    return @"{\rtf1\ansi " + ToString() + @" }";
  }
}

答案 1 :(得分:4)

您可以使用RichTextBox的Rtf属性。首先生成一个rtf字符串:

var rtf = string.Format(@"{{\rtf1\ansi \b {0}\b0 \line {1}\line\line }}",
                          tn.date.ToString("MM/dd/yy H:mm:ss"), 
                          tn.text);

并将字符串附加到RichTextBox

中的现有文字
this.notes_pln.SelectionStart = this.notes_pln.TextLength;
this.notes_pln.SelectedRtf = rtf;
相关问题