2014-01-19 268 views
4

我正在使用Visual Studio Express 2012與C#一起工作。如何將粗體文本添加到富文本框

我正在使用代碼將文本添加到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; 

我如何粗線添加到豐富的文本框?

感謝迄今爲止提交的答案。我想我需要澄清一點。 我不添加這2行1次。我會多次添加這些線。

回答

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() + @" }"; 
    } 
} 
+0

感謝您的回答。但是,看來我無法一次追加1行。當我嘗試'this.notes_pnl.Rtf + ='時不顯示任何內容。 –

+0

@LeeLoftiss一旦你開始使用'rtf',你應該使用它包括換行符在內的所有符號。使用'\ line'應該破壞行 – JaredPar

+0

謝謝。問題是我會在不同的時間添加幾行,所以我需要將文本追加到前面的文本中。 –

2

您可以使用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; 
相關問題