2010-11-02 56 views
7

我如何格式化富文本框中的文本,如以下格式文本

02/11/2010 - 下午五點一刻 - 亞當: 2日 月加入另一個測試的注意事項

02/11/2010 - 05:14 PM - Z_kas:測試說明。 階段改爲:N的查詢 - 發送報價

02/11/2010 - 下午5時12 - USER32:2日 月加入另一個測試筆記

感謝

+0

[更改WinForms RichTextBox中文本的顏色]的可能重複(http://stackoverflow.com/questions/2527700/change-color-of-text-within-a-winforms-richtextbox) – Oliver 2010-11-02 12:54:04

回答

17

的規定其他人可能會與先前的問題重複。不過,請參閱下面的代碼片段。您無需獲取要添加的文本的長度以更改其格式,只需在添加之前設置格式即可。如果在文本框中有很多文本,這(我認爲)會提供更好的性能。

只要用戶在文本框中沒有選擇,就會工作,然後會發生奇怪的事情,我無法解釋。也許別人能啓發我們?在Change color of text within a WinForms RichTextBox中提出的解決方案出現了同樣的問題。我替換了用戶名後的「:」,以便讓我的代碼示例更容易地使用DateTime事件工作,這可以在「Split」中輕鬆修改。

 private void AddText(string text) 
    { 
     string[] str = text.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); 

     if (str.Length == 2) 
     { 
      richTextBox1.DeselectAll(); 
      richTextBox1.SelectionFont = new Font(richTextBox1.SelectionFont, FontStyle.Bold); 
      richTextBox1.AppendText(Environment.NewLine + str[0] + ";"); 
      richTextBox1.SelectionFont = new Font(richTextBox1.SelectionFont, FontStyle.Regular); 
      richTextBox1.AppendText(str[1]); 
     } // Else?? Well, do something else.. 
    } 

和呼叫:

 private void button1_Click(object sender, EventArgs e) 
    { 
     AddText(DateTime.Now.ToString() + " - Mike; Did something"); 

    } 
9

另一種方法是使用RTF格式:

richTextBox1.Rtf = @"{\rtf1\pc \b 02/11/2010 - 05:15 PM - Adam:\b0 Another test notes added on 2nd November \par \b 02/11/2010 - 05:14 PM - Z_kas:\b0 Test Notes. STAGE CHANGED TO: N Enq - Send Quote\par \b 02/11/2010 - 05:12 PM - user32:\b0 Another test notes added on 2nd November"; 

請參閱MSDN:http://msdn.microsoft.com/en-us/library/aa287595%28v=vs.71%29.aspx http://msdn.microsoft.com/en-us/library/aa140301.aspx#rtfspec_8

「\ b」 開頭的文本的粗體部分和「\ b0」結束。 「\ par」開始新的段落/行(最接近\ n)。