在富文本框中格式化文本

时间:2010-11-02 12:25:22

标签: c# winforms richtextbox

如何在富文本框中设置文本格式,如下所示

  

02/11/2010 - 05:15 PM - Adam:第二次添加了另一个测试笔记   十一月

     

02/11/2010 - 05:14 PM - Z_kas:测试笔记。                         阶段变为:N Enq - 发送报价

     

02/11/2010 - 05:12 PM - user32:第二次添加了另一个测试说明   十一月

由于

2 个答案:

答案 0 :(得分:21)

如其他人所说,可能与先前的问题有重复。但是,请参阅下面的代码段。您不必获取附加文本的长度以更改其格式,只需在追加之前设置格式即可。如果文本框中有大量文本,这(我认为)可以提供更好的性能。

只要用户在文本框中没有选择,这将起作用,然后会发生我无法解释的奇怪事情。也许别人可以启发我们? Change color of text within a WinForms RichTextBox中提出的解决方案也出现了同样的问题。我替换了用户名之后的“:”只是为了让我的代码示例更容易使用DateTime工作,这可以在“拆分”中轻松修改。

       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");

    }

答案 1 :(得分:13)

另一种方法是使用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)。