附加Null字符时RichTextBox字体颜色的错误

时间:2014-02-13 23:56:49

标签: c# .net richtextbox

我有一个应用程序(在C#,.Net 2.0,VS 2010 SP1中开发),可以读取/写入串行端口,并将通信放在RichTextBox控件上。我被要求根据方向(无论是传入还是传出)对内容进行颜色编码,并标记有控制字符的位置(当它们显示消息中的哪个控制字符时类似于RealTerm)。因此,在存在控制字符的方法中,我添加<>标签。当我想使用上述方法中的字符串更新我的RTF时,我会寻找'<'和'>'并更改文本的颜色。但是,如果要添加的字符在标记之后为0x00或null,则当我调用RTB的.append方法时,fontcolor会切换到之前的状态,因此字符串之后的颜色与标记颜色相同。

我已经通过改变append方法后的颜色找到了解决这个问题的方法,但这对我来说似乎很好奇。我在本网站和MSDN上回顾了许多在线讨论/问题,但没有人解决这个问题并阅读了RichTextbox文档。我错过了一些明显的东西吗或者这只是另一个VS问题?

这是确定颜色并将字符附加到RTB的方法:

private void FormatAndAddText(string text_, bool isRx_)
{
    RichTextBox.DeselectAll(); //If I dont call this method, If the user has selected the some text, the starred line will change the font color of the selection

    Color mainTextColor = (isRx_ ? Color.LawnGreen : Color.Yellow);
    Color tagsTextColor = (isRx_ ? Color.Red : Color.Blue);

    RichTextBox.SelectionColor = mainTextColor; //****this will modify the color of the text, if user has selected some of it.

    for(int i = 0; i< text_.Length; i++)
    {
        char char = text_[i];

        if (_char == '<')
            RichTextBox.SelectionColor = tagsTextColor ;

        RichTextBox.AppendText(char.ToString()); //if char is 0x00, the color resets!!!

        if ((i < text_.Length-1))
        {
            if (char == '>')
                RichTextBox.SelectionColor = mainTextColor; //change the color to what it is supposed to be.
        }
    }
}

0 个答案:

没有答案